Windows 註冊表儲存數據類型多樣,`REG_MULTI_SZ`(多重字串)與 `REG_BINARY`(二進制值)無法直接轉為字串讀取,需特定處理方式。
// 註冊表鍵值為字串陣列
string[] key = (string[])Registry.LocalMachine.OpenSubKey(
@"SOFTWARE\Microsoft\Windows\CurrentVersion\Setup")
.GetValue("Installation Sources");
// 取得第一個路徑
string installPath = key.GetValue(0).ToString();
byte[] array = (byte[])Registry.LocalMachine.OpenSubKey(
@"SOFTWARE\Microsoft\DirectX")
.GetValue("InstalledVersion");
string sDirectX = "DirectX ";
for (int i = 0; i < array.Length; i++)
{
if (array[i] != 0)
sDirectX += array[i].ToString();
}
// 補充版本字串
string sVer = Registry.LocalMachine.OpenSubKey(
@"SOFTWARE\Microsoft\DirectX")
.GetValue("Version").ToString();
sDirectX += " (" + sVer + ")";