Я столкнулся с этим, работая над консольным приложением .NET, чтобы прочитать переменную среды PATH, и обнаружил, что использование System.Environment.GetEnvironmentVariable автоматически расширяет переменные среды.
Я не хотел, чтобы это произошло ... это означает, что папки в пути, такие как "% SystemRoot% \ system32", переписывались как "C: \ Windows \ system32". Чтобы получить нерасширенный путь, я должен был использовать это:
string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\";
string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);
Сработало как шарм для меня.