Что определяет переменную среды USERPROFILE при запуске приложения .NET - PullRequest
1 голос
/ 08 февраля 2012

У меня есть приложение .net / C #, когда оно запускается на тестовом сервере под управлением VMWARE / Windows Server 2008, получает переменную среды USERPROFILE, указывающую на C: \ windows \ system32 \ config \ systemprofile, но другие приложения, похоже, встроены в подобный мода наследует правильное значение C: \ Users \ {username}.

Небольшой поворот - приложение получает правильное значение при локальном запуске на моей машине для разработки. Так что я думаю, что это проблема профиля / реестра с некоторой комбинацией настроек в моем приложении.

Проблемы проявляются при попытке открыть OpenFileDialog или аналогичный. Появляется исключение «Местоположение недоступно: C: \ Windows \ system32 \ config \ systemprofile \ Desktop ссылается на местоположение, которое недоступно ...»

Есть идеи?

ОБНОВЛЕНИЕ: приложение представляет собой WPF, выполняющий веб-службы для IIS через WCF. Локально в разработке я использую IISExpress. Я обнаружил, что после прикосновения к службам WCF в клиенте приложение наследует APPDATA и USERPROFILE IIS AppPool, под которыми работают службы. Если я настрою значения AppPool, чтобы использовать мою учетную запись пользователя вместо ApplicationPoolDefault и установил LoadUserProfile = true - все работает. Очевидно, это плохо. В качестве альтернативы я кеширую переменные среды при запуске приложения WPF, а после того, как оно первоначально подключается к WCF, я сбрасываю переменные. Это, кажется, обходит проблему, но я хотел бы решить ее лучше, но я не знаю, что влияет на это поведение в WCF и моих службах IIS.

1 Ответ

0 голосов
/ 08 февраля 2012

Возможно, придется иметь дело с тем, под какой учетной записью работает веб-приложение в IIS.Вы можете изменить его с учетной записи «Сетевая служба» по умолчанию на действительную учетную запись пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...