我想在 C# 程序中运行以下 shell 命令:
uwfmgr overlay get-availablespace
一个简单的解决方案是调用 cmd 进程,如下所示:
var ps = new ProcessStartInfo("cmd")
{
RedirectStandardError = true,
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true,
FileName = "cmd.exe",
Arguments = "/user:Administrator /c uwfmgr overlay get-availablespace"
};
using (Process p = Process.Start(ps))
{
output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
}
但是是否有一个简单的 API 可以调用以避免解析进程的输出字符串?另一个问题是我必须以管理权限调用 cmd 。
更新:我尝试使用 WMI Api 但没有成功,这是我的代码:
var scope = new ManagementScope(@"root\standardcimv2\embedded");
var uwfClass = new ManagementClass(scope.Path.Path, "UWF_Overlay", null);
foreach (ManagementObject instance in uwfClass.GetInstances())
{
var result = instance.InvokeMethod("AvailableSpace", null);
break;
}