Process.Start () и олицетворение пользователя - PullRequest
2 голосов
/ 11 марта 2011

У меня есть настраиваемое действие установщика MSI, которое вызывает Process.Start() для запуска командного файла, который внутренне выполняет множество операций и, наконец, вызывает iisreset. Но на нескольких компьютерах это не удается из-за ошибки доступа. Интересно, что пользователь, работающий с MSI, может сделать iisreset из командной строки. Это только терпит неудачу, когда выполнено через мой процесс.

Так что мне интересно, Process.Start() порождает новый процесс в качестве текущего пользователя с меньшими привилегиями? Если да, как я могу сказать, что он работает под тем же пользователем со всеми привилегиями, которые имеет пользователь? Может ли кто-нибудь помочь мне лучше понять это и диагностировать, почему это не удается.

MSI created using : Visual Studio 2008
Server : Windows Server 2008
UAC Status : Off

Сообщение об ошибке

Попытка перезапуска не удалась. Доступ закрыт, Вы должны быть администратором удаленный компьютер, чтобы использовать эту команду. Либо ваша учетная запись добавлена ​​в администратор локальной группы удаленный компьютер или домен администратор глобальной группы

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 11 марта 2011

Вы должны установить флаг msidbCustomActionTypeNoImpersonate (0x800) в своем настраиваемом действии, чтобы избежать проблем с функцией контроля доступа пользователей в последних системах Windows.

Подробнее см. в этом блоге .

...