1. 程式人生 > >Unity通過程式碼修改登錄檔。

Unity通過程式碼修改登錄檔。

讀:讀取的登錄檔中HKEY_LOCAL_MACHINE\SOFTWARE目錄下的XXX目錄中名稱為name的登錄檔值;

private string GetRegistData(string name)
{
    string registData;
    RegistryKey hkml = Registry.LocalMachine;
    RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
    RegistryKey aimdir = software.OpenSubKey("XXX",true);
    registData = aimdir.GetValue(name).ToString();
    return registData;
}

寫:在登錄檔中HKEY_LOCAL_MACHINE\SOFTWARE目錄下新建XXX目錄並在此目錄下建立名稱為name值為tovalue的登錄檔項

private void WTRegedit(string name,string tovalue)
{
    RegistryKey hklm = Registry.LocalMachine;
    RegistryKey software = hklm.OpenSubKey("SOFTWARE",true);
    RegistryKey aimdir = software.CreateSubKey("XXX");
    aimdir.SetValue(name,tovalue);
}

刪除:在登錄檔中HKEY_LOCAL_MACHINE\SOFTWARE目錄下XXX目錄中刪除名稱為name登錄檔項

private void DeleteRegist(string name)
{
    string[] aimnames;
    RegistryKey hkml = Registry.LocalMachine;
    RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
    RegistryKey aimdir = software.OpenSubKey("XXX",true);
    aimnames = aimdir.GetSubKeyNames();
    foreach(string aimKey in aimnames)
    {
    if(aimKey == name)
    aimdir.DeleteSubKeyTree(name);
    }
}

判斷:在登錄檔中HKEY_LOCAL_MACHINE\SOFTWARE目錄下XXX目錄中判斷名稱為name登錄檔項是否存在,這一方法在刪除登錄檔時已經存在,在新建一登錄檔項時也應有相應判斷;

private bool IsRegeditExit(string name)
{
    bool _exit = false;
    string[] subkeyNames;
    RegistryKey hkml = Registry.LocalMachine;
    RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
    RegistryKey aimdir = software.OpenSubKey("XXX",true);
    subkeyNames = aimdir.GetSubKeyNames();
    foreach(string keyName in subkeyNames)
    {
        if(keyName == name)
        {
        _exit = true;
        return _exit;
        }
    }
    return _exit;
}

這就是unity對登錄檔的增刪查改了。

using Microsoft.Win32;

unity中需要加名稱空間,才能訪問登錄檔。對於更具體的介紹請參照: