使用Process.Start作为本地管理员帐户启动单独的程序

本文关键字:启动 单独 程序 管理员 Start Process 使用 | 更新日期: 2023-09-27 18:21:39

我们的业务中使用了一款需要管理员权限才能运行的软件。但是,员工不允许访问具有管理员权限的帐户。这是在windows7环境中。

我们已经通过GPO在所需的计算机上设置了本地管理员帐户。我正在创建的软件的目的是启动需要管理员权限的软件作为这个本地管理员帐户。

到目前为止,该软件运行正常,因为它将软件作为帐户启动,但它仍然会在没有管理权限时出现错误。如果你右键单击并在软件上运行,然后手动键入帐户详细信息,效果会很好。

SecureString pwd = new SecureString();
foreach (char c in "somepassword") { pwd.AppendChar(c); }
var psi = new ProcessStartInfo
{
    FileName = location,
    UserName = "localadminaccountname",
    Domain = Environment.MachineName,
    Password = pwd,
    UseShellExecute = false,
    Verb = "runas"
};
try
{
    Process.Start(psi);
}

代码中包含一个异常catch语句,其中包含错误报告。调用Process.Start(psi)时不会引发异常(更新)

谢谢。

编辑windows 7的公司版本将"用户访问控制"设置为"从不通知",因此在调用Process.Start(psi)时不会显示UAC弹出窗口。

使用Process.Start作为本地管理员帐户启动单独的程序

如果UAC设置为"从不通知",则它将被禁用-用户以最大权限集运行。

这意味着,如果用户是管理员帐户,则不需要使用"runas"谓词。这也意味着,如果用户不是管理员帐户,您的应用程序可能仍然无法工作(因为用户无法提升,OTS(过肩)提升被禁用)。

您是否尝试将IIS应用程序池的"加载用户配置文件"设置为true?我也有类似的情况。这对我有效。

有关更多信息,请参阅:ASP.NET中的安全异常和IIS 7.5 中的"加载用户配置文件"选项