您的位置:首页 > 移动开发 > IOS开发

一个往环境变量path中添加路径的工具

2007-01-27 14:44 441 查看
#include <iostream>
#include <Windows.h>
using namespace std;

#define E_NO_PARAM 1
#define E_NO_ERROR 0
#define E_READ_FAILED -1
#define E_CLOSE_FAILDE 2
#define E_EXSITE 3

int _tmain(int argc, _TCHAR* argv[])
{
 if ( argc < 2)
 {
  cout<<"用法:程序名 注册表值"<<endl;
  return E_NO_PARAM;
 }

 HKEY hKey;
 char szValue[1024];
 char szAddString[1024];
 LONG lRet;
 DWORD dwSize = 1024;

 ZeroMemory(szValue,1024);
 ZeroMemory(szAddString,1024); 
 sprintf(szAddString,argv[1]);

 lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM//CurrentControlSet//Control//Session Manager//Environment",
      0, KEY_ALL_ACCESS, &hKey );

 if ( lRet != ERROR_SUCCESS )
 {
  cout<<"添加注册表失败,请手工添加"<<endl;
  return E_READ_FAILED;
 }
 trace("查找注册表成功");

 lRet = RegQueryValueEx(hKey,"path",NULL,NULL,(LPBYTE)szValue,&dwSize);
 if ( lRet != ERROR_SUCCESS )
 {
  cout<<"查询值失败,请手工添加"<<endl;
  RegCloseKey(hKey);
  return E_READ_FAILED;
 }
 trace("读取注册表值成功");
 trace(szValue);

 if ( strstr(szValue,szAddString) != NULL )
 {
  trace("已经存在该值");
  RegCloseKey(hKey);
  return E_EXSITE;
 }
 

 strcat(szValue,";");
 strcat(szValue,szAddString);
 trace(szValue);
 
 lRet = RegSetValueEx(hKey,"path",0,REG_EXPAND_SZ,(LPBYTE)szValue,sizeof(szValue)+1 );
 if ( lRet != ERROR_SUCCESS )
 {
  cout<<"添加注册表失败,请手工添加"<<endl;
  RegCloseKey(hKey);
  return E_READ_FAILED;
 }
 trace("添加注册表成功");

 lRet = RegCloseKey(hKey);
 if ( lRet != ERROR_SUCCESS )
 {
  cout<<"关闭注册表键失败"<<endl;
  return E_CLOSE_FAILDE;
 }
 trace("关闭注册表成功");

 return E_NO_ERROR;
}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息