您的位置:首页 > 其它

读写注册表

2013-02-22 11:06 120 查看
int get_app_path(char *path)

{

char buff[MAX_PATH];

memset(buff, 0, sizeof(buff));

if (GetModuleFileName(NULL, buff, MAX_PATH) == 0)

{

return -1;

}

memcpy(path, buff, strlen(buff));

return 0;

}

int reg_ora_client(const char *path)

{

HKEY hreg;

char dir[MAX_PATH];

char paths[4096];

unsigned long size, len;

if (path == NULL || (len = strlen(path)) < 2)

{

return -1;

}

len --;

memset(dir, 0, sizeof(dir));

strcpy(dir, path);

while (dir[len] == '\\')

{

dir[len --] = 0;

}

if(RegOpenKey(HKEY_LOCAL_MACHINE, \

"SYSTEM\\ControlSet001\\Control\\Session Manager\\Environment", \

&hreg) != ERROR_SUCCESS)

{

fprintf(stderr, "设置ORACLE环境 --- 无法打开键!\n");

return -1;

}

if (RegSetValueEx(hreg, "TNS_ADMIN", 0, REG_SZ, \

(const unsigned char *)dir, strlen(dir)) != ERROR_SUCCESS)

{

fprintf(stderr, "设置ORACLE环境 --- 无法设置TNS_ADMIN!\n");

RegCloseKey(hreg);

return -1;

}

size = 4096;

memset(paths, 0, sizeof(paths));

if (RegQueryValueEx(hreg, "PATH", NULL, NULL, (unsigned char *)paths, &size) != ERROR_SUCCESS)

{

RegCloseKey(hreg);

return -1;

}

if (stristr(paths, dir) == NULL)

{

len = strlen(paths);

if (paths[-- len] != ';')

{

strcat(paths, ";");

}

strcat(paths, dir);

if (RegSetValueEx(hreg, "PATH", 0, REG_EXPAND_SZ, \

(const unsigned char *)paths, strlen(paths)) != ERROR_SUCCESS)

{

fprintf(stderr, "设置ORACLE环境 --- 无法设置PATH!\n");

RegCloseKey(hreg);

return -1;

}

}

if (RegSetValueEx(hreg, "NLS_LANG", 0, REG_SZ, \

(const unsigned char *)"SIMPLIFIED CHINESE_CHINA.ZHS16GBK", 33) != ERROR_SUCCESS)

{

fprintf(stderr, "设置ORACLE环境 --- 无法设置NLS_LANG!\n");

RegCloseKey(hreg);

return -1;

}

RegCloseKey(hreg);

return 0;

}

int rdb_init()

{

char dir[MAX_PATH];

char *p;

memset(dir, 0, sizeof(dir));

if (get_app_path(dir) == -1)

{

return -1;

}

if ((p = strrchr(dir, '\\')) == NULL)

{

return -1;

}

memset(p, 0, sizeof(dir) - (p - dir));

if (reg_ora_client(dir) == -1)

{

return -1;

}

return 0;

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