public string Get(SdkEnvironmentVariableTarget currentUserBeforeEvaluation) { using (RegistryKey environmentKey = OpenEnvironmentKeyIfExists(writable: false, sdkEnvironmentVariableTarget: currentUserBeforeEvaluation)) { return(environmentKey?.GetValue(Path, "", RegistryValueOptions.DoNotExpandEnvironmentNames) as string); } }
public string Get(SdkEnvironmentVariableTarget sdkEnvironmentVariableTarget) { switch (sdkEnvironmentVariableTarget) { case SdkEnvironmentVariableTarget.DotDefault: return(""); case SdkEnvironmentVariableTarget.CurrentUser: return(_mockPathInternal.UserLevelPath); default: throw new ArgumentOutOfRangeException(nameof(sdkEnvironmentVariableTarget), sdkEnvironmentVariableTarget, null); } }
public void Set(string value, SdkEnvironmentVariableTarget sdkEnvironmentVariableTarget) { switch (sdkEnvironmentVariableTarget) { case SdkEnvironmentVariableTarget.DotDefault: throw new ApplicationException("Should never touch DotDefault's EnvironmentVariable."); case SdkEnvironmentVariableTarget.CurrentUser: _mockPathInternal.UserLevelPath = value; break; default: throw new ArgumentOutOfRangeException(nameof(sdkEnvironmentVariableTarget), sdkEnvironmentVariableTarget, null); } }
public void Set(string value, SdkEnvironmentVariableTarget sdkEnvironmentVariableTarget) { using (RegistryKey environmentKey = OpenEnvironmentKeyIfExists(writable: true, sdkEnvironmentVariableTarget: sdkEnvironmentVariableTarget)) { environmentKey?.SetValue(Path, value, RegistryValueKind.ExpandString); } unsafe { // send a WM_SETTINGCHANGE message to all windows fixed(char *lParam = "Environment") { IntPtr r = SendMessageTimeout(new IntPtr(HWND_BROADCAST), WM_SETTINGCHANGE, IntPtr.Zero, (IntPtr)lParam, 0, 1000, out IntPtr _); } } }
private static RegistryKey OpenEnvironmentKeyIfExists(bool writable, SdkEnvironmentVariableTarget sdkEnvironmentVariableTarget) { RegistryKey baseKey; string keyName; if (sdkEnvironmentVariableTarget == SdkEnvironmentVariableTarget.CurrentUser) { baseKey = Registry.CurrentUser; keyName = "Environment"; } else if (sdkEnvironmentVariableTarget == SdkEnvironmentVariableTarget.DotDefault) { baseKey = Registry.Users; keyName = ".DEFAULT\\Environment"; } else { throw new ArgumentException(nameof(sdkEnvironmentVariableTarget) + " cannot be matched, the value is: " + sdkEnvironmentVariableTarget.ToString()); } return(baseKey.OpenSubKey(keyName, writable: writable)); }