2011-10-15 54 views
7

我目前使用Microsoft.Win32.Registry函數來創建,刪除,設置/獲取值等。有什麼辦法將包含應用程序設置的某個鍵「導出」爲.REG文件?將註冊表項導出到C#中的.REG文件中。

+0

相關https://stackoverflow.com/a/16317193/492 –

回答

0

另一種方式可能是使用PowerShell的。你也可以從c#運行ps腳本。 Here是一個導出到.reg文件的ps腳本示例。

4

您可以p/pinvoke RegSaveKeyEx

+0

是的,這是做到這一點的方法。確實非常簡單。 –

1

我發現,當試圖創建一個有效的REG文件,你需要遵循一定的規則:

你的文件必須包含這個作爲第一行:

「Windows註冊表編輯器5.00版」

  • 在下一行加上其自己的行括號

    之間
  • 添加相應的名稱/值對,每一個完整的密鑰的路徑。格式爲:

    • "ValueName" = "Value"(SZ型)
    • "ValueName" = dword:00000000(DWORD類型 - 總是8位)
  • 對於BINARYMULTI_SZEXPAND_SZ ......我不是很因爲我沒有和他們一起工作。

  • 重複2並在必要時添加更多的鍵/子項
  • 注意,我只用此導出/修改字符串(SZ)值3;下面是對於出口而言,單一值的偉大工程,一個小幫手:

    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變量。