将运行CMD命令的C#应用程序转换为以管理员权限运行PowerShell命令。

14 浏览
0 Comments

将运行CMD命令的C#应用程序转换为以管理员权限运行PowerShell命令。

我有一个使用Visual Studio应用程序来运行一系列Cmd命令的函数AdminEx(string command)。最近我们更新了代码,并转换为Powershell。我该如何修改这个函数以适应新的代码?这仍然是最有效的方法吗?

0
0 Comments

问题的原因是需要将运行CMD命令的C#应用程序转换为以管理员权限运行PowerShell命令的应用程序。解决方法是更改代码中的文件路径,将其从运行cmd.exe改为运行powershell.exe。然而,建议使用System.Management.Automation命名空间,以便在C#中使用PowerShell。System.Management.Automation是用于在C#中使用PowerShell的命名空间,通过调用外部进程来实现对PowerShell实例的编程控制。然而,由于需要以管理员权限运行,最佳(也许是唯一)的方法可能是使用Powershell CLI通过子进程方法(将.UseShellExecute设置为true,并将.Verb设置为RunAs)。

0
0 Comments

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*系列命令,如这个答案中所示。如果需要进一步的帮助,请提出一个新的问题,并在提问后在这里@我。

0