Yonne03_chen 2022-06-03 16:53 采纳率: 100%
浏览 64
已结题

如何通过C#导出一个注册表项到指定.reg文件中?


        public int ExportKey(string RegKey, string SavePath)
        {
            if (File.Exists(SavePath))
                Process.Start(
                        "regedit",
                        string.Format(" /E {0} {1} ", RegKey, SavePath));
            return 0;
        }

        public static int ImportReg(string SavedFilePath, string regPath)
        {
            if (File.Exists(SavedFilePath))
                Process.Start(
                        "regedit",
                        string.Format(" /D {1} {0} ", SavedFilePath, regPath));
            return 0;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ExportKey(@"D:\BennetFoddySaveSys\Saves\1.reg", @"HKEY_USERS\S-1-5-21-2614243731-1503690591-3433987936-1001\SOFTWARE\Bennett Foddy\Getting Over It\NumSaves_h765021473");
            DialogResult dr = MessageBox.Show("成功保存存档到栏位1", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
        }

我想用C#窗体应用程序实现一个游戏存档的功能(那个游戏不带存档功能),然后那个游戏是把存档数据放在了注册表里,我想导出一个注册表项到指定目录下的.reg文件里,但是他既不报错也没有成功导出,大家有解决办法吗?

注:已使用管理员身份运行

  • 写回答

1条回答 默认 最新

  • 真的小白啊 2022-06-03 17:53
    关注

    试试这样,我这里是成功了的

    img

    using System;
    using System.Diagnostics;
    using System.IO;
    
    namespace ConsoleApp1
    {
        internal class Program
        {
            static void Main(string[] args)
            {
                var registryKey = @"HKEY_CURRENT_USER\SOFTWARE\7-Zip\Options";
                var desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                var regFileName = Path.Combine(desktop, "RegBackup.reg");
                ExportRegistryKey(registryKey, regFileName);
                Console.ReadKey();
            }
    
            private static void ExportRegistryKey(string registryKey, string regFileName)
            {
                if (!string.IsNullOrWhiteSpace(registryKey) && !string.IsNullOrWhiteSpace(regFileName))
                {
                    if (File.Exists(regFileName))
                    {
                        File.Delete(regFileName);
                    }
    
                    if (!registryKey.StartsWith("\""))
                    {
                        registryKey = $"\"{registryKey}\"";
                    }
    
                    if (!regFileName.StartsWith("\""))
                    {
                        regFileName = $"\"{regFileName}\"";
                    }
    
                    Process.Start("REG", $"EXPORT {registryKey} {regFileName} /y");
                }
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月4日
  • 已采纳回答 6月3日
  • 赞助了问题酬金10元 6月3日
  • 创建了问题 6月3日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。