C#以管理员身份启动命令

时间:2011-11-10 21:24:57

标签: c#

我正在尝试以管理员身份启动csript(登录的帐户具有管理员权限)。将startinfo.verb设置为runas不起作用。

ProcessStartInfo p1 = new ProcessStartInfo();
p1.UseShellExecute = true;
p1.Verb = "runas";
p1.FileName = "cscript";
p1.Arguments = "I:\\WPKG\\wpkg.js /synchronize /quiet /nonotify";
Process p = new Process();
p.StartInfo = p1;
p.Start();

我可以使用权限启动它的唯一方法是手动设置用户名和密码。但是,我无法对该信息进行硬编码或将其置于配置中。有没有办法让cmd在没有登录信息的情况下提升?

我也试过在上面的代码周围添加使用(System.Security.Principal.WindowsIdentity.GetCurrent()。Impersonate()),但也没有运气。

注意:如果我直接运行bat文件,它可以工作,如果我运行密码硬编码,它的工作原理。它只能在没有登录信息的情况下提升从C#的启动。

2 个答案:

答案 0 :(得分:1)

此实用程序:

http://jpassing.com/2007/12/08/launch-elevated-processes-from-the-command-line/

可能有所帮助。请注意该帖子中的评论。

答案 1 :(得分:0)

您有多种选择:

  • 使用runas实用程序(非动词),并将用户名和密码传递给。您可能需要手动执行此操作一次并保存凭据(仅在重新启动之前有效)。
  • 传递ProcessStartInfo上的用户名和密码(您需要将密码转换为SecureString
  • 使用runas动词(非实用程序)与UAC进行交互,如this question中所述。