gpt4 book ai didi

c# - 如何在 C# 中通过用户交互运行注册表文件

转载 作者:可可西里 更新时间:2023-11-01 11:31:46 26 4
gpt4 key购买 nike

我已经在 C# 中创建了一个注册表文件来配置客户端电子邮件帐户。然后我创建了一个进程,然后开始执行 reg 文件,如下所示:

  var proc = new Process();
var pi = new ProcessStartInfo();
pi.UseShellExecute = true;
pi.FileName = strRegPath;
proc.StartInfo = pi;

proc.Start();

这很好用,但是它需要通过单击"is"来与注册表文件的导入进行交互。无论如何我可以在后台运行它而不与用户交互吗?

最佳答案

REGEDIT.EXE 有一个/s 选项可以抑制对话框。

所以你要把 pi.FileName 改成 regedit.exe

并添加 pi.Arguments = "/s "+ strRegPath

并且您现在不需要 pi.UseShellExecute,因为您没有使用将文件扩展名链接到可执行文件来打开它们的 shell 表。

编辑:事实上,您甚至不需要 ProcessStartInfo,您可以这样做

System.Diagnostics.Process.Start("regedit.exe", "/s \""+strRegPath+"\"");

编辑:用户访问控制 (UAC)

但是,除非您使用某种第 3 方注册文件,否则最好使用 Microsoft.Win32.Registry 类更改注册表项。

当您启动 regedit 时,UAC 会弹出,因为它可以更改需要提升的 HKEY_LOCAL_MACHINE 中的值。但是,我本以为所有客户电子邮件帐户设置都在 HKEY_CURRENT_USER 下。可以使用注册表类访问 HKEY_CURRENT_USER 下的子项而无需提升,因此不会创建任何 UAC 弹出窗口,还允许非管理员登录使用脚本。这可能是比尝试使用 .reg 文件更好的方法。

关于c# - 如何在 C# 中通过用户交互运行注册表文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18924931/

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