C++ 環境變量添加

若是要在「命令提示符」中運行本身的軟件,通常都須要cd到目錄,才能直接運行,而配置環境變量能夠簡化這一部分操做。mysql

好比使用綠色版的MySQL時,就須要本身添加bin目錄到「系統變量」的「Path」中,雖然用批處理比較方便,一行就能夠搞定,以下:sql

wmic ENVIRONMENT where "name='Path' and username='<system>'" set VariableValue="%path%;C:\MySQL\Bin"

注:"name='Path' and username='<system>'"爲系統變量中Path變量。bash

C:\MySQL\Bin爲MySQL的路徑spa

雖然方便,可是,若是須要寫一個自動配置MySQL的程序,去使用system("")調用總感受有點怪怪的。code

下面記錄下另外一種實現的方法。blog

在Windows系統中,能夠直接向註冊表寫入數據,從而到達設置環境變量的目的。io

Path變量在註冊的位置爲:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environmentclass

 1   HKEY hKey;
 2     const char *mysql = ";C:\\mysql\\bin";
 3     const char *key = "System\\CurrentControlSet\\Control\\Session Manager\\Environment";
 4 
 5     if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, key, 0, KEY_READ|KEY_WRITE, &hKey) != ERROR_SUCCESS)
 6     {
 7         //RegOpenKeyEx Failure!
    } 9 DWORD dwType = REG_SZ; 10 char data[1024] = {}; 11 DWORD dwSize = sizeof(data); 12 13 //獲取當前環境變量Path的值 14 if (RegQueryValueEx(hKey, "Path", NULL, &dwType, (LPBYTE)data, &dwSize) != ERROR_SUCCESS) 15 { 16 //RegQueryValueEx Failure!
    } 18 char *environment = new char[strlen(mysql) + strlen(data)]; 19 sprintf(environment, "%s%s", data, mysql); 20 21 //設置環境變量Path的值 22 if (RegSetValueEx(hKey, "Path", NULL, REG_SZ, (const unsigned char *)environment, strlen(environment)) != ERROR_SUCCESS) 23 { 24 //RegSetValueEx Failure!
    } 26 RegCloseKey(hKey); 27 delete[] environment; 28 environment = NULL;
相關文章
相關標籤/搜索