C# 使用Process.Start作为本地管理员帐户启动单独的程序
我们的业务中使用了一款需要管理员权限才能运行的软件。但是,不允许员工访问具有管理员权限的帐户。这是在Windows7环境中 我们已通过GPO在所需计算机上设置了本地管理员帐户。 我创建的软件的目的是启动需要管理员权限的软件,作为本地管理员帐户 到目前为止,该软件工作正常,因为它是以帐户的形式启动该软件的,但它仍然给出了它在没有管理员权限时给出的错误。如果您右键单击并在软件上运行,然后手动键入帐户详细信息,则可以正常工作C# 使用Process.Start作为本地管理员帐户启动单独的程序,c#,windows-7,administrator,C#,Windows 7,Administrator,我们的业务中使用了一款需要管理员权限才能运行的软件。但是,不允许员工访问具有管理员权限的帐户。这是在Windows7环境中 我们已通过GPO在所需计算机上设置了本地管理员帐户。 我创建的软件的目的是启动需要管理员权限的软件,作为本地管理员帐户 到目前为止,该软件工作正常,因为它是以帐户的形式启动该软件的,但它仍然给出了它在没有管理员权限时给出的错误。如果您右键单击并在软件上运行,然后手动键入帐户详细信息,则可以正常工作 SecureString pwd = new SecureString();
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);
}
代码中包含一个包含错误报告的exception catch语句。调用Process.Startpsi时不会引发异常。更新
谢谢
编辑
windows 7的公司版本将用户访问控制设置为从不通知,因此在调用Process.Startpsi时不会显示UAC弹出窗口。如果UAC设置为从不通知,则它将被禁用-用户以最大权限集运行
这意味着,如果用户是管理员帐户,则不需要使用runas动词。这还意味着,如果用户不是管理员帐户,您的应用程序可能仍然无法工作,因为用户无法提升,并且OTS越肩提升被禁用。您是否尝试为IIS应用程序池设置“加载用户配置文件”为真?我也有类似的情况。这对我有用 有关更多信息,请参阅:
以编程方式启动流程时,您是否看到需要执行验证的UAC弹出窗口?有一个包含错误报告的异常捕获。注意:您不认为了解异常说明会很有用吗?编辑问题以澄清这些问题。如果您在命令窗口中查看runas选项,您将看到有许多标志,如配置文件、环境等。这些标志可能是在右键单击时设置的,但不是在代码中设置的。