
На выявление этой проблемы мне и нашему ИТ-отделу компании потребовалось много часов.
Проблема возникает только на 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.
Часто я обнаруживал, что если я нажимаю правой кнопкой мыши на нужную программу и запускаю ее "как администратор", то она работает нормально. Я не уверен, что это сработает в вашем случае.