zoukankan      html  css  js  c++  java
  • C++ 环境变量添加

    如果要在“命令提示符”中运行自己的软件,一般都需要cd到目录,才能直接运行,而配置环境变量可以简化这一部分操作。

    比如使用绿色版的MySQL时,就需要自己添加bin目录到“系统变量”的“Path”中,虽然用批处理比较方便,一行就可以搞定,如下:

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

    注:"name='Path' and username='<system>'"为系统变量中Path变量。

    C:MySQLBin为MySQL的路径

    虽然方便,但是,如果需要写一个自动配置MySQL的程序,去使用system("")调用总感觉有点怪怪的。

    下面记录下另一种实现的方法。

    在Windows系统中,可以直接向注册表写入数据,从而到达设置环境变量的目的。

    Path变量在注册的位置为:HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession ManagerEnvironment

     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;
  • 相关阅读:
    python 单体模式 的几种实现
    python 相对路径导入 与 绝对路径导入
    python 优雅地实现插件架构
    tkinter 弹出窗口 传值回到 主窗口
    flask 与 vue.js 2.0 实现 todo list
    FormData 数据转化为 json 数据
    vue.js 2.0实现的简单分页
    一个神奇的实现:计算数组尾部对称长度
    flask, SQLAlchemy, sqlite3 实现 RESTful API 的 todo list, 同时支持form操作
    SQLAlchemy 关联表删除实验
  • 原文地址:https://www.cnblogs.com/XavierJian/p/6509679.html
Copyright © 2011-2022 走看看