我正在尝试以管理员身份启动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#的启动。
答案 0 :(得分:1)
此实用程序:
http://jpassing.com/2007/12/08/launch-elevated-processes-from-the-command-line/
可能有所帮助。请注意该帖子中的评论。
答案 1 :(得分:0)
您有多种选择:
runas
实用程序(非动词),并将用户名和密码传递给。您可能需要手动执行此操作一次并保存凭据(仅在重新启动之前有效)。ProcessStartInfo
上的用户名和密码(您需要将密码转换为SecureString
。runas
动词(非实用程序)与UAC进行交互,如this question中所述。