#region SetEnvironmentPath
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern IntPtr SendMessageTimeout(IntPtr hWnd, uint Msg, UIntPtr wParam, string lParam, SendMessageTimeoutFlags fuFlags,
uint uTimeout, out UIntPtr lpdwResult);
public static string RegKey = @"System\CurrentControlSet\Control\Session Manager\Environment";
public static string NewPathForFolder = @Application.StartupPath+"\\OOI_HOME";
public enum SendMessageTimeoutFlags : uint
{
SMTO_NORMAL = 0x0000,
SMTO_BLOCK = 0x0001,
SMTO_ABORTIFHUNG = 0x0002,
SMTO_NOTIMEOUTIFNOTHUNG = 0x0008
}
private static void SetEnvironmentPath()
{
RegistryKey key0 = Microsoft.Win32.Registry.LocalMachine;
RegistryKey key = key0.OpenSubKey(RegKey, true);
string OOI_HOMEPath = (String)key.GetValue("OOI_HOME");//OOI_HOME
if (OOI_HOMEPath == null || OOI_HOMEPath.IndexOf(NewPathForFolder, 0) == -1)
{
//OOI_HOMEPath += ";" + NewPathForFolder;
OOI_HOMEPath = NewPathForFolder;
key.SetValue("OOI_HOME", OOI_HOMEPath);//OOI_HOME
IntPtr HWND_BROADCAST = (IntPtr)0xffff;
const UInt32 WM_SETTINGCHANGE = 0x001A;
UIntPtr result;
IntPtr settingResult = SendMessageTimeout(HWND_BROADCAST,
WM_SETTINGCHANGE,
(UIntPtr)0,
"Environment",
SendMessageTimeoutFlags.SMTO_NORMAL,
10000,
out result);
}
}
#endregion
自动添加环境变量代码
最新推荐文章于 2024-07-16 08:46:26 发布