"Выполнить как..." неправильно создает пользовательскую среду

Мое приложение C# аварийно завершает работу при некоторых обстоятельствах при запуске без прав администратора.

У меня проблема с Windows Server 2003, и я пытаюсь найти дополнительную информацию об этом. Это может быть проблемой в других ОС Windows.

Похоже, что если я создаю пользователя без прав администратора, а затем запускаю свое приложение под этим пользователем с помощью команды "Запуск от имени…", среда пользователей не будет настроена правильно, и переменная среды TEMP будет указывать на C:\Windows\Temp вместо пользователей, имеющих собственную папку Temp в профиле Documents and Settings. У пользователя нет прав доступа к этой папке, поэтому происходит сбой приложения, когда компилятор.Net JIT пытается выполнить запись / чтение в эту папку.

Если я вхожу в систему как этот пользователь, ситуация все равно не так. Я не получаю подготовленную среду, которую вы обычно получаете при входе в систему от нового пользователя, и мое приложение по-прежнему не будет работать без сбоев во время запуска. На самом деле я понял, что пользователь не может запустить calc.exe или другие программы в папке Windows. Похоже, что их среда постоянно испорчена, и я думаю, что единственный путь вперед - это удалить их профиль.

Если я создаю пользователя без прав администратора и вхожу в него как пользователь перед выполнением "Запуск от имени…", его среда настраивается нормально, и мое приложение работает.

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

1 ответ

Решение

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

C:\temp>runas RUNAS USAGE:

РУНАС [ [/noprofile | / профиль] [/env] [/netonly] ]
        / пользователь: программа

РУНАС [ [/noprofile | / профиль] [/env] [/netonly] ]
        / Smartcard [/user:] программа

/ noprofile указывает, что профиль пользователя не должен быть загружен. Это приводит к более быстрой загрузке приложения, но может вызвать сбои в работе некоторых приложений.
/ profile указывает, что профиль пользователя должен быть загружен. Это по умолчанию. /env использовать текущую среду вместо пользователя. / netonly использовать, если указанные учетные данные предназначены только для удаленного доступа. / savecred для использования учетных данных, ранее сохраненных пользователем. Этот параметр недоступен в Windows XP Home Edition и будет игнорироваться. / Смарт-карта используется, если учетные данные должны быть предоставлены со смарт-карты. / пользователь должен быть в форме USER@DOMAIN или DOMAIN\USER
командная строка программы для EXE. Смотрите ниже примеры

Примеры:

runas /noprofile /user:mymachine\administrator cmdrunas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\""

ПРИМЕЧАНИЕ. Введите пароль пользователя только при появлении запроса. ПРИМЕЧАНИЕ. ПОЛЬЗОВАТЕЛЬ @ ДОМЕН не совместим с / netonly. ПРИМЕЧАНИЕ: / профиль не совместим с / netonly.

Другие вопросы по тегам