这次主要是为了设置UGII_USER_DIR变量,所以我将UGEnv直接定义在函数里面了。这里主要是通过注册表进行环境变量的注册,所以我们需要通过RegOpenKeyEx先打开注册表并获取到句柄,然后通过句柄来操作该注册表的环境变量的注册。注册通过RegSetValueEx方法实现,最后记得RegCloseKey(hKey)关闭注册表生效配置信息。
HKEY hKey;//句柄 const char *key = "System\\CurrentControlSet\\Control\\Session Manager\\Environment"; //注册表路径 RegOpenKeyEx(HKEY_LOCAL_MACHINE, key, 0, KEY_READ | KEY_WRITE, &hKey //打开注册表 RegSetValueEx(hKey, UGEnv, NULL, REG_SZ, (const unsigned char *)path, strlen(path)); //设置注册表 RegCloseKey(hKey); //关闭注册表
最后我们通过一个main函数将以上方法串起来就可以使用啦, 这里需要注意的是本次注册的是系统变量而不是用户变量。
遇到的错误和解决方案如果遇到C2664错误提示:无法将参数 2 从“char *”转换为“LPCWSTR” ,点击决解方案中的项目属性->常规->字符集,将“使用Unicode字符集”改成“使用多字节字符集”即可解决该报错。
如果遇到C4996错误提示: This function or variable may be unsafe(此函数或变量可能不安全),我们可以在点击决解方案中的项目属性->C/C ->预处理器->预处理器定义中添加_CRT_SECURE_NO_WARNINGS定义即可。
更多C/C 实战技巧可参考专栏:C/C 实战系列