将运行CMD命令的C#应用程序转换为以管理员权限运行PowerShell命令。
问题的原因是需要将运行CMD命令的C#应用程序转换为以管理员权限运行PowerShell命令的应用程序。解决方法是更改代码中的文件路径,将其从运行cmd.exe改为运行powershell.exe。然而,建议使用System.Management.Automation命名空间,以便在C#中使用PowerShell。System.Management.Automation是用于在C#中使用PowerShell的命名空间,通过调用外部进程来实现对PowerShell实例的编程控制。然而,由于需要以管理员权限运行,最佳(也许是唯一)的方法可能是使用Powershell CLI通过子进程方法(将.UseShellExecute设置为true,并将.Verb设置为RunAs)。
C#应用程序运行CMD命令,现在想要改为运行具有管理员权限的Powershell命令。问题的原因是C#应用程序需要以管理员权限运行Powershell命令,而不是以普通用户权限运行CMD命令。解决方法是使用System.Diagnostics.ProcessStartInfo类来启动一个新的进程来执行Powershell命令,并设置UseShellExecute为true、Verb为"runas"、FileName为"powershell.exe"、Arguments为"-NoProfile -Command " + command,然后调用Process.Start方法执行该进程并等待其退出。
下面是具体的代码示例:
var proc = new System.Diagnostics.ProcessStartInfo(); proc.UseShellExecute = true; proc.Verb = "runas"; proc.FileName = @"powershell.exe"; proc.Arguments = "-NoProfile -Command " + command; proc.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; var p = System.Diagnostics.Process.Start(proc); p.WaitForExit();
或者更简洁的写法:
using System; using System.Diagnostics; var proc = new ProcessStartInfo() { UseShellExecute = true, Verb = "runas", WindowStyle = ProcessWindowStyle.Hidden, FileName = "powershell.exe", Arguments = "-NoProfile -Command " + command }; Process.Start(proc).WaitForExit();
以上是根据问题中提供的解决方法对应用程序进行修改的例子。如果需要修改注册表项,可以使用Powershell的*Item*系列命令,如这个答案中所示。如果需要进一步的帮助,请提出一个新的问题,并在提问后在这里@我。