读写注册表
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;
}
{
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;
}
相关文章推荐
- winform C#读写注册表代码
- C#读写注册表的一些资料
- QSettings读写注册表、配置文件(C:\Users\firecat\AppData\Roaming\liteide\liteide.ini)
- 64位系统中读写注册表
- 【ASP】注册表的读写
- 读写注册表
- VC 读写注册表
- 读写注册表
- WinCE注册表--创建、打开、读写、关闭
- 注册表 读写 操作 我自己编写的类
- C++ 注册表的读写
- vc读写注册表
- 利用C++Builder读写注册表
- C#读写注册表 二进制写入
- 小工具:命令行设置注册表、文件系统的读写权限
- QSetting读写注册表
- vc下读写注册表
- Java读写注册表两种方式
- 读写操作,文件和注册表
- Qt读写注册表和ini文件