Unity通過程式碼修改登錄檔。
阿新 • • 發佈:2018-12-13
讀:讀取的登錄檔中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中需要加名稱空間,才能訪問登錄檔。對於更具體的介紹請參照: