将注册表项导出到C#中的.REG文件

时间:2011-10-15 06:58:56

标签: c# .net winapi registry

我目前正在使用Microsoft.Win32.Registry函数来创建,删除,设置/获取值等。有没有办法将包含应用程序设置的某个键“导出”到.REG文件?

3 个答案:

答案 0 :(得分:4)

你可以p / pinvoke RegSaveKeyEx

答案 1 :(得分:1)

我发现在尝试创建有效的REG文件时,您需要遵循以下规则:

你的文件必须包含这个作为第一行:

" Windows注册表编辑器版本5.00"

  1. 在下一行添加括号

  2. 之间的完整键路径
  3. 添加相应的名称/值对,每个对在其自己的行上。格式为:

    • "ValueName" = "Value"(SZ类型)
    • "ValueName" = dword:00000000(双打类型 - 总是8位数)
  4. BINARYMULTI_SZEXPAND_SZ ...由于我没有与他们合作,我无法发表评论。

    1. 根据需要重复2和3以添加更多键/子键
    2. 请注意,我只使用它来导出/修改字符串(SZ)值;这是一个很好的小帮手,可以输出单个值:

          private void ExportRegistryKey(string RegistryKeyPath, string ValueName, string Value, string ExportFileName = "ExportedRegValue.reg")
          {
              string regTemplate = @"Windows Registry Editor Version 5.00\r\n[{0}]\r\n""{1}""=""{2}""";
              string regFileContent = string.Format(regTemplate, RegistryKeyPath, ValueName, Value);
              File.WriteAllText(ExportFileName, regFileContent);
              return true;
          }
      

      如果您需要导出多个值,您可以更改函数以获取字典,使用值名称作为键,将实际值作为值,然后在追加regFileContent变量时循环。 / p>

答案 2 :(得分:0)

另一种方法可能是使用PowerShell。您也可以从c#运行ps脚本。 Here是导出到.reg文件的ps脚本的示例。