Программа, запущенная из папки, где родительская папка недоступна, не сможет использовать уровень TCP.

Программа, запущенная из папки, где родительская папка недоступна, не сможет использовать уровень TCP.

На выявление этой проблемы мне и нашему ИТ-отделу компании потребовалось много часов.

Проблема возникает только на Windows Server 2008, Windows 7 и Windows 8. На Windows XP или Windows Server 2003 проблем не возникает.

У нас есть программа, которую мы разработали внутри нашей компании. Программа работает отлично, и проблема не является специфичной для этой программы.

Программа использует localhost для связи с другими программами, запущенными на компьютере, с помощью веб-сервисов. Проблема в том, что эта связь не работает, если программа находится в домашней папке пользователя.

Потратив много часов на выяснение причин этого, мы недавно поняли, что проблема исчезает, если у пользователя есть доступ ко всем родительским папкам в UNC-пути к исполняемому файлу.

Таким образом, если домашний диск смонтирован в H: = \SomeServer\hdrive$\SomeUser и у пользователя нет доступа к \SomeServer\hdrive$, то наша программа получит ошибки TCP, и веб-службы не будут работать.

Если пользователь затем получит только разрешение «Просмотр содержимого папки» по этому пути, то веб-сервисы будут работать.

В остальном программа работает нормально. Мы проверили, что все файлы dll успешно связаны и что никаких других ошибок не возникает.

Похоже, это что-то, что делает ОС. Кто-нибудь знает, почему это происходит?

решение1

В Windows 7 и выше некоторые папки защищены по умолчанию. Я понимаю, что это сделано из соображений безопасности. То есть, это затрудняет для программы A возможность тайно изменить dll, используемую программой B.

Часто я обнаруживал, что если я нажимаю правой кнопкой мыши на нужную программу и запускаю ее "как администратор", то она работает нормально. Я не уверен, что это сработает в вашем случае.

Связанный контент