"Выполнить как..." неправильно создает пользовательскую среду
Мое приложение 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 cmd
runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\""
ПРИМЕЧАНИЕ. Введите пароль пользователя только при появлении запроса. ПРИМЕЧАНИЕ. ПОЛЬЗОВАТЕЛЬ @ ДОМЕН не совместим с / netonly. ПРИМЕЧАНИЕ: / профиль не совместим с / netonly.