如何在 C# 中使用用户交互运行注册表文件

本文关键字:交互 用户 运行 注册表 文件 | 更新日期: 2023-09-27 18:32:08

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

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

这工作正常,但是它需要使用通过单击"是"与导入 regustry 文件进行交互。无论如何,我可以在不与用户交互的情况下在后台运行它吗?

如何在 C# 中使用用户交互运行注册表文件

REGEDIT.EXE有一个/s 选项,用于抑制对话框。

所以你会改变圆周率。注册表编辑器的文件名.exe

并添加 pi。参数 = "/s " + strRegPath

而且你不需要圆周率。现在使用ShellExecute,因为您没有使用将文件扩展名链接到可执行文件的shell表来打开它们。

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

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

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

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

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