gpt4 book ai didi

c# - Process.Start() 和手动运行有什么区别?

转载 作者:可可西里 更新时间:2023-11-01 13:47:14 33 4
gpt4 key购买 nike

我正在为我工​​作的公司创建一个应用程序,它将备份我们提供的一些软件的数据。它具有将 SQL 数据库、文件夹、文件和注册表项添加到备份作业的选项,然后将其放入 Zip 文件中。还有一些选项可以在需要时恢复备份。

我在注册表备份和恢复方面遇到问题。我已经经历了很多次迭代,试图让它发挥作用,但我已经以最能说明我的问题的方式对其进行了简化,我希望有人能帮助解决。

本质上,我是通过使用带有命令行参数的 regedit.exe 导入一个“.reg”文件。我曾尝试通过使用 ProcessStartInfo() 构建它来做到这一点,但它没有用。所以为了测试这个问题,我创建了一个批处理文件并按如下方式运行它:

    File.WriteAllText("ImportReg.bat", "regedit /s /i MyRegFile.reg");
Process.Start("ImportReg.bat");

然而,这是行不通的。

批处理文件创建成功,REG文件有效。这两个文件都与 EXE 位于同一位置,因此我认为问题不应该与正在使用的目录有关。如果我自己从这个位置运行批处理文件,它会成功导入注册表文件。我是我正在测试的机器的完全管理员。

我也遇到过从注册表导出的问题。注册表的某些部分可以正常导出,而其他部分则不能。但是,如果我像上面的导入一样将导出设置为批处理文件,那么它每次都有效。

有人可以帮忙吗?我不明白为什么我的批处理文件可以工作,但当它通过 Process.Start 运行时就不行了。任何建议将不胜感激。

最佳答案

会不会是权限问题?

当您双击 Regedit 时,它会自动提升。但是当运行你的程序时,它不是。也许这就是为什么它允许您导出注册表的某些部分,但不能导出其他部分。

关于c# - Process.Start() 和手动运行有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18681764/

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