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

StackOverflow https://stackoverflow.com/questions/212172

Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

Рассмотрите возможность использования runas с профилем пользователя, если это не так.

C:\temp>runas RUNAS USAGE:

RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]
        /user: program

RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]
        /smartcard [/user:] program

/noprofile указывает, что профиль пользователя не должен быть загружен.Это ускоряет загрузку приложения, но может привести к сбоям в работе некоторых приложений.
/profile указывает, что должен быть загружен профиль пользователя.Это значение используется по умолчанию./env для использования текущей среды вместо среды пользователя./использовать только в том случае, если указанные учетные данные предназначены только для удаленного доступа./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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top