Запустить процесс под текущим пользователем - PullRequest
7 голосов
/ 29 февраля 2012

В VS. есть «Настройка проекта».Во время установки я запускаю другой процесс:

System.Diagnostics.Process process = new System.Diagnostics.Process();
//fill StartInfo and run call Start()
process.Start();

Если я запускаю установщик под Windows 7 и устанавливаю для «Все», процесс запускается в СИСТЕМЕ.Если я устанавливаю «Только для меня», процесс запускается под текущим пользователем.Как мне всегда запустить процесс под текущим пользователем?

Ответы [ 3 ]

5 голосов
/ 02 марта 2012

Я нашел очень простое решение .Все, что вам нужно, это просто создать новый класс и скопировать текст по этой ссылке.

Для запуска процесса вызовите ProcessAsUser.Launch("program name");

0 голосов
/ 30 августа 2015

У меня была похожая проблема: моему установочному расширению (настраиваемое действие) требовались права администратора, которые вызывали окно повышения прав. После того, как я запустил свое приложение в конце «Только для меня», у процесса были настройки, которые были сделаны для контекста администратора. Например, моя учетная запись пользователя любит видеть все расширения файлов в проводнике Windows, но учетная запись администратора была настроена для их скрытия. Поэтому в каждом открытом окне я не видел расширений. Чтобы вылечить это, этот кусок кода работал:

ProcessStartInfo startInfo = new ProcessStartInfo(ShortcutTarget);
startInfo.LoadUserProfile = true;
startInfo.UseShellExecute = false;
Process.Start(startInfo);

Работает только в режиме «Только для меня», в «Все» используются настройки администратора. Но это нормально для меня.

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

Используйте ProcessStartInfo класс и его свойство UserName, затем используйте его в качестве аргумента для Process.Start статический метод.

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Process.Start(startInfo);
...