免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
[注冊表和VBS]配置環(huán)境變量并立即生效 - 電腦技術(shù) - 廣西民族師范學(xué)院論壇 創(chuàng)新的|...

[注冊表和VBS]配置環(huán)境變量并立即生效

最近開始學(xué)Java。我們主要學(xué)Java Application和Java Applet兩個分類。為了在任意目錄下都能編譯和運行Java程序,需要對path和classpath環(huán)境變量進行相關(guān)設(shè)置。終于知道環(huán)境變量用處之一了。想用程序來實現(xiàn)一下設(shè)置環(huán)境變量。好不容易用注冊表函數(shù)寫好,結(jié)果不行。暈。。。后來想到應(yīng)該要刷新一下。注銷和重起都可以。但我想實現(xiàn)的是立即生效。后來上網(wǎng)搜了一下,得到如下結(jié)果:
通過修改注冊表,修改了系統(tǒng)的環(huán)境變量,但是不會立即生效,除非在【我的電腦】上點擊右鍵,然后打開環(huán)境變量的窗口,點擊【OK】后,才能生效。后來用Spy++工具捕獲消息,發(fā)現(xiàn)在點擊【OK】按鈕時,發(fā)送了WM_SETTINGCHANGE消息。
這里有兩種方法可以實現(xiàn):

1.SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,(LPARAM)TEXT("Environment"));
2.SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment", SMTO_ABORTIFHUNG, 5000, 0);
終于成功了,高興哇。后來無意中發(fā)現(xiàn)用VBS配置環(huán)境變量并立即生效簡單得要命,當(dāng)場暈倒。。。
下面把兩種實現(xiàn)方法都貼出來吧。
  1. //////////配置JAVA環(huán)境變量////////
  2. #include <windows.h>
  3. #include <string.h>
  4. #include <stdlib.h>

  5. int SetValue (char * valueName, char *AddValue);

  6. DWORD nLength = MAX_PATH;
  7. char DirectoryName[MAX_PATH];

  8. int APIENTRY WinMain(HINSTANCE hInstance,
  9.                      HINSTANCE hPrevInstance,
  10.                      LPSTR     lpCmdLine,
  11.                      int       nCmdShow)
  12. {
  13.         char pValue[MAX_PATH];
  14.         ::ZeroMemory(DirectoryName,MAX_PATH);
  15.         ::ZeroMemory(pValue,MAX_PATH);

  16.         // 得到當(dāng)前執(zhí)行文件的路徑名       
  17.         ::GetCurrentDirectory(nLength,DirectoryName);

  18.         // 設(shè)置path環(huán)境變量
  19.         strcat(pValue,";");
  20.         strcat(pValue,DirectoryName);
  21.         strcat(pValue,"\\bin");
  22.         SetValue("path",pValue);

  23.         // 重置pValue
  24.         ::ZeroMemory(pValue,MAX_PATH);

  25.         // 設(shè)置classpath環(huán)境變量
  26.         strcat(pValue,".;");
  27.         strcat(pValue,DirectoryName);
  28.         strcat(pValue,"\\lib\\tool.jar;");
  29.         strcat(pValue,DirectoryName);
  30.         strcat(pValue,"\\lib\\dt.jar");
  31.         SetValue("classpath",pValue);
  32.         return 0;
  33. }

  34. int SetValue(char * valueName, char *AddValue)
  35. {
  36.         DWORD keyType = REG_SZ;       
  37.         BYTE getValue[1024];
  38.         DWORD DataLen = 1024;
  39.         HKEY hRoot = HKEY_LOCAL_MACHINE;
  40.         HKEY hKey;
  41.         char *pIsset;
  42.         ::ZeroMemory(getValue,MAX_PATH);
  43.     char *szSubKey = "SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment";
  44.        
  45.         // 打開鍵
  46.         DWORD dwDisposition = REG_OPENED_EXISTING_KEY;       
  47.         LONG lRet = ::RegCreateKeyEx(hRoot, szSubKey, 0, NULL, REG_OPTION_NON_VOLATILE,

  48. KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition);
  49.         if (lRet != ERROR_SUCCESS)
  50.                 return -1;
  51.        
  52.         // 讀取鍵值
  53.         lRet = ::RegQueryValueEx(hKey,valueName,NULL,&keyType,getValue,&DataLen);
  54.        
  55.         pIsset = strstr((char*)getValue, DirectoryName);

  56.         // 如果已設(shè)置則返回
  57.         if (pIsset)
  58.         {
  59.                 char MsgText[80];
  60.                 strcpy(MsgText,valueName);
  61.                 strcat(MsgText,"環(huán)境變量已配置好,不需再配置!");
  62.                 ::MessageBox(NULL,MsgText,"fc提示",MB_OK);
  63.                 return -1;
  64.         }

  65.         strcat((char*)getValue,AddValue);
  66.        
  67.         // 寫入鍵值
  68.         lRet = ::RegSetValueEx(hKey, valueName, 0, REG_SZ, (BYTE*)getValue, strlen((char*)

  69. getValue));
  70.         if (lRet == ERROR_SUCCESS)
  71.         {       
  72.                 char MsgText[80];
  73.                 strcpy(MsgText,valueName);
  74.                 strcat(MsgText,"環(huán)境變量配置成功!");
  75.                 ::MessageBox(NULL,MsgText,"fc提示",MB_OK);

  76.                 // 使設(shè)置立即生效,下面兩種法都可以
  77.                 SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,(LPARAM)TEXT("Environment"));
  78.                 //SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,

  79. (LPARAM)"Environment", SMTO_ABORTIFHUNG, 5000, 0);
  80.         }
  81.        
  82.         // 關(guān)閉句柄
  83.         ::RegCloseKey(hKey);
  84.         return 0;
  85. }
復(fù)制代碼
  1. on error resume next
  2. set sysenv = CreateObject("WScript.Shell").Environment("system") '系統(tǒng)環(huán)境變量的數(shù)組對象
  3. sysenv.Remove("ztest3")                      '刪除變量
  4. sysenv("ztest3")="test value"                '添加變量
復(fù)制代碼
VBS這種簡單吧……
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
設(shè)立系統(tǒng)環(huán)境變量立即生效的VBS腳本
C++中strcat()函數(shù)
函數(shù)指針詳解
062.浮點數(shù)轉(zhuǎn)換為字符串
[原創(chuàng)]按鍵+VBS實現(xiàn)WINSOCK-TCP連接傳送字符(二)
QTP:VBS基礎(chǔ)教程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服