gpt4 book ai didi

c# - 有什么方法可以使用 .NET 以编程方式从 Bcdedit.exe 获取值/设置?

转载 作者:行者123 更新时间:2023-11-30 12:28:38 25 4
gpt4 key购买 nike

从提升的命令提示符运行 bcdedit.exe 时,您可以看到当前 BCD 设置的值。我需要读取 hypervisorlaunchtype 的设置/值。

Screenshot

有谁知道这样做的方法吗?

我试图将管道输出写入一个 tmp 文件,以便我可以解析它,但遇到了管道输出问题,因为 bcdedit.exe 需要从一个提升提示。也许有更好的方法?

编辑:我忘了补充一点,我希望能够在最终用户根本看不到命令​​提示符(即,甚至没有快速闪现)的情况下执行此操作。

最佳答案

首先,以管理员身份运行 Visual Studio 并在控制台应用程序中尝试此代码(运行应用程序进行调试):

    static void Main(string[] args)
{

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.FileName = @"CMD.EXE";
p.StartInfo.Arguments = @"/C bcdedit";
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();

// parse the output
var lines = output.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Where(l => l.Length > 24);
foreach (var line in lines)
{
var key = line.Substring(0, 24).Replace(" ", string.Empty);
var value = line.Substring(24).Replace(" ", string.Empty);
Console.WriteLine(key + ":" + value);
}
Console.ReadLine();
}

但是,有一个问题,如果您希望它在从提升的 Visual Studio 外部启动应用程序时起作用,您需要配置您的应用程序以请求提升的权限:

在您的项目上,单击添加新项目并选择应用程序 list 文件。

打开 app.manifest 文件并替换此行:

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

用这个:

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

关于c# - 有什么方法可以使用 .NET 以编程方式从 Bcdedit.exe 获取值/设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21069978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com