2012-01-27 181 views
0

我们有一个软件用于我们的业务,需要管理员权限才能运行。但是,员工不允许访问具有管理员权限的帐户。这是在Windows 7环境中。使用Process.Start作为本地管理员帐户启动单独的程序

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

到目前为止,软件正在正常工作,因为它正在启动该软件作为帐户,但它仍然给出它没有管理权限时给出的错误。如果您在软件上点击右键并选择runas,并手动输入帐户详细信息,则可以正常工作。

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企业搭建了用户访问控制设置为“从不通知”,所以没有显示UAC弹出时的Process.Start(PSI)被调用。

+0

你看到UAC弹出窗口要求执行验证当以编程方式启动您的过程时? – ken2k 2012-01-27 10:20:44

+1

“有一个异常错误报告。”:您认为了解异常情况会有所帮助吗? – 2012-01-27 10:29:20

+0

编辑问题以澄清这些问题。 – 2012-01-27 10:33:42

回答

0

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

这意味着如果用户是管理员帐户,则不需要使用“runas”动词。这也意味着,如果用户不是管理员帐户,则可能是因为用户无法提升并且OTS(肩上)高程被禁用,您的应用程序可能无法工作(

相关问题