用VC给Oracle的即时客户端(InstanceClient)写个安装设置程序
2008-06-23 13:01
501 查看
Oracle 出了个即时客户端,设置三个环境变量就可以用了,也不大。
为了更加方便使用,我写了个程序,放在即时客户端目录里,运行一下就把三个环境变量设好了。很方便。
程序也不难,核心代码贴一下。 // OraSetup.cpp : 定义应用程序的类行为。
//
#include "stdafx.h"
#include "OraSetup.h"
#include "OraSetupDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// COraSetupApp
BEGIN_MESSAGE_MAP(COraSetupApp, CWinApp)
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()
// COraSetupApp 构造
COraSetupApp::COraSetupApp()
{
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}
// 唯一的一个 COraSetupApp 对象
COraSetupApp theApp;
CString COraSetupApp::GetMyPath()
{
CString strPath;
GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
strPath.ReleaseBuffer();
return strPath;
}
BOOL COraSetupApp::SetEnv(CString key,CString value,BOOL bAppend)
{
HKEY hRegKey;
BOOL bResult=FALSE;
CString str=_T("SYSTEM//ControlSet001//Control//Session Manager//Environment");
if(::RegOpenKey(HKEY_LOCAL_MACHINE, str, &hRegKey) != ERROR_SUCCESS)
bResult=FALSE;
else
{
if(bAppend){
CString oldValue=_T("");
DWORD size;
::RegQueryValueEx(hRegKey,key,NULL,NULL,(BYTE *)oldValue.GetBuffer(1024),&size);
oldValue.ReleaseBuffer();
if(oldValue.Find(value)!=-1){
//已经写过
return TRUE;
}
value = value+_T(";")+oldValue;
}
bResult=(::RegSetValueEx( hRegKey,
key,
0,
REG_SZ,
(CONST BYTE *)value.GetBuffer(0),
value.GetLength()*sizeof(TCHAR) ) != ERROR_SUCCESS);
}
return bResult;
}
// COraSetupApp 初始化
BOOL COraSetupApp::InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
CString path = GetMyPath();
TCHAR driver[255],dir[255];
_tsplitpath(path.GetBuffer(0),driver,dir,NULL,NULL);
path.ReleaseBuffer();
//去年最后的
//我看人家的都不放
path = driver;
path += dir;
path = path.TrimRight(_T("//"));
SetEnv(_T("TNS_ADMIN"), path);
SetEnv(_T("Path"), path,TRUE);
SetEnv(_T("NLS_LANG"), _T("SIMPLIFIED CHINESE_CHINA.ZHS16GBK"));
return FALSE;
/*
COraSetupDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 在此处放置处理何时用“确定”来关闭
// 对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用“取消”来关闭
// 对话框的代码
}
// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
// 而不是启动应用程序的消息泵。
return FALSE;
*/
}
下载请到我的网络硬盘。
为了更加方便使用,我写了个程序,放在即时客户端目录里,运行一下就把三个环境变量设好了。很方便。
程序也不难,核心代码贴一下。 // OraSetup.cpp : 定义应用程序的类行为。
//
#include "stdafx.h"
#include "OraSetup.h"
#include "OraSetupDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// COraSetupApp
BEGIN_MESSAGE_MAP(COraSetupApp, CWinApp)
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()
// COraSetupApp 构造
COraSetupApp::COraSetupApp()
{
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}
// 唯一的一个 COraSetupApp 对象
COraSetupApp theApp;
CString COraSetupApp::GetMyPath()
{
CString strPath;
GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
strPath.ReleaseBuffer();
return strPath;
}
BOOL COraSetupApp::SetEnv(CString key,CString value,BOOL bAppend)
{
HKEY hRegKey;
BOOL bResult=FALSE;
CString str=_T("SYSTEM//ControlSet001//Control//Session Manager//Environment");
if(::RegOpenKey(HKEY_LOCAL_MACHINE, str, &hRegKey) != ERROR_SUCCESS)
bResult=FALSE;
else
{
if(bAppend){
CString oldValue=_T("");
DWORD size;
::RegQueryValueEx(hRegKey,key,NULL,NULL,(BYTE *)oldValue.GetBuffer(1024),&size);
oldValue.ReleaseBuffer();
if(oldValue.Find(value)!=-1){
//已经写过
return TRUE;
}
value = value+_T(";")+oldValue;
}
bResult=(::RegSetValueEx( hRegKey,
key,
0,
REG_SZ,
(CONST BYTE *)value.GetBuffer(0),
value.GetLength()*sizeof(TCHAR) ) != ERROR_SUCCESS);
}
return bResult;
}
// COraSetupApp 初始化
BOOL COraSetupApp::InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
CString path = GetMyPath();
TCHAR driver[255],dir[255];
_tsplitpath(path.GetBuffer(0),driver,dir,NULL,NULL);
path.ReleaseBuffer();
//去年最后的
//我看人家的都不放
path = driver;
path += dir;
path = path.TrimRight(_T("//"));
SetEnv(_T("TNS_ADMIN"), path);
SetEnv(_T("Path"), path,TRUE);
SetEnv(_T("NLS_LANG"), _T("SIMPLIFIED CHINESE_CHINA.ZHS16GBK"));
return FALSE;
/*
COraSetupDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 在此处放置处理何时用“确定”来关闭
// 对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用“取消”来关闭
// 对话框的代码
}
// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
// 而不是启动应用程序的消息泵。
return FALSE;
*/
}
下载请到我的网络硬盘。
相关文章推荐
- 配置oracle instance client。不需要安装oracle客户端实现程序以及plsql连接oracle服务端
- Oracle Instant Client(即时客户端) 安装与配置
- Oracle Instant Client(即时客户端) 安装与配置
- win8 X64上安装32位Oracle Instant Client(即时客户端) 安装与配置
- Oracle Instant Client(即时客户端) 安装与配置
- Oracle Instant Client(即时客户端) 安装与配置 PLSQL Developer
- Oracle Instant Client(即时客户端) 安装与配置
- Oracle Instant Client(即时客户端) 安装与配置
- Oracle Instant Client(即时客户端) 安装与配置
- Oracle Instant Client(即时客户端) 安装与配置
- Oracle Instant Client(即时客户端) 安装与配置
- Oracle Instant Client(即时客户端) 安装与配置
- oracle instantclient(即时客户端安装) 中文乱码
- Oracle Instant Client(即时客户端)pl/SQL连接远程oracle客户端 安装与配置
- Oracle Instant Client(即时客户端) 安装与配置
- Oracle Instant Client(即时客户端) 安装与配置
- Win7上安装32位Oracle客户端错误解决方法:[INS-30131] 执行安装程序验证所需的初始设置失败
- 在.net安装程序中部署oracle客户端全攻略---环境变量的设置
- PL/SQL Developer 17.3.1下载与Oracle Instant Client 12.2(即时客户端) 安装与配置
- Oracle Instant Client(即时客户端) 安装与配置