使用Registry.GetValue(key, name, null)
时,而不是:
C:\Windows\system32
我想检索原始注册表项:
%SystemRoot%\system32
这在C和WinAPI中是可行的,但是我没有办法用.NET做到这一点。
答案 0 :(得分:4)
您需要传递RegistryValueOptions.DoNotExpandEnvironmentNames
。例如:
var key = @"SOFTWARE\Classes\.library-ms\ShellNew";
var name = "IconPath";
var regval = Registry.LocalMachine.OpenSubKey(key).GetValue(name, "",
RegistryValueOptions.DoNotExpandEnvironmentNames);
Console.WriteLine(regval);
输出是: %SYSTEMROOT%\ System32下\ imageres.dll,-1001
答案 1 :(得分:0)
据我所知,默认情况下它会做你想要的事情:
Registry.SetValue(@"HKEY_CURRENT_USER\dummy", "pathTest", @"%SystemRoot%\system32");
Console.WriteLine(Registry.GetValue(@"HKEY_CURRENT_USER\dummy", "pathTest", null));
// Output:
// %SystemRoot%\system32