请问怎样写注册表

imisu 2003-08-19 01:17:10
我用odbc连接数据库
想在程序启动时候自动建立数据源
请问用程序怎样写注册表,以便建立数据源
...全文
43 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Alpha_Gu 2003-08-21
  • 打赏
  • 举报
回复
如上所說,用TRegistry類來操作,可以看看幫助,很簡單的.
MEFULEU 2003-08-19
  • 打赏
  • 举报
回复
转:

void __fastcall TForm1::Button1Click(TObject *Sender)
{

AnsiString AccessDll;
AnsiString S;
TRegistry *Registry = new TRegistry;
try
{
Registry->RootKey = HKEY_LOCAL_MACHINE;
if(Registry->OpenKey("Software\\ODBC\\ODBCINST.INI\\ODBC Drivers",false))
{
S = Registry->ReadString("Microsoft Access Driver (*.mdb)");
if( S != AnsiString("Installed"))
{
MessageBox(Application->Handle,"The system isn't install the Access driver."," Warning",MB_ICONWARNING);
return;
}
else
{
MessageBox(Application->Handle,"This system have already installed the access driver.","Information",MB_ICONINFORMATION);
}

}
else
{
MessageBox(Application->Handle,"The Read odbcinst.ini\odbc driver error.","Warning",MB_ICONWARNING);
}

Registry->CloseKey();
Registry->RootKey = HKEY_LOCAL_MACHINE;

if(Registry->OpenKey("Software\\ODBC\\ODBCINST.INI\\Microsoft Access Driver (*.mdb)",false))
{

AccessDll = Registry->ReadString("Driver");
}
else
{
MessageBox(Application->Handle,"Read the ODBC\ODBCINST.INI\ Microsoft AccessDriver Error.","Warning.",MB_ICONWARNING);

}


Registry->CloseKey();
Registry->RootKey = HKEY_CURRENT_USER;

if (Registry->OpenKey("Software\\ODBC\\ODBC.INI\ODBC Data Sources",FALSE))
{

Registry->WriteString("MyAccessTest","Driver do Microsoft Access (*.mdb)");
AnsiString s ;
s = Registry->ReadString("MyAccessDSN");
}
else
{
ShowMessage("Create the MyAccess Error");
}

Registry->CloseKey();
Registry->RootKey = HKEY_CURRENT_USER;

if( Registry->OpenKey("Software\\ODBC\\ODBC.INI\\MyAccessTest",TRUE))
{
Registry->WriteString("DBQ","E:\\TAO\\Test_bcb\\ODBC\\test.mdb");
Registry->WriteString("Drscription","");
Registry->WriteString("Driver",AccessDll);
Registry->WriteInteger("DriverID",0x00000019);
Registry->WriteString("FIL","MS Access;");
Registry->WriteInteger("SafeTransactions",0x0000000);
Registry->WriteString("UID","");

if( Registry->OpenKey("Engines\\Jet",TRUE))
{
Registry->WriteString("ImplicitCommitSync","");
Registry->WriteInteger("MaxBufferSize",0x00000800);
Registry->WriteInteger("PageTimeout",0x00000005);
Registry->WriteInteger("Threads",0x0000003);
Registry->WriteString("UserCommitSync","Yes");
}
else
{
ShowMessage("Safeware\ODBC\MyAccessDSNtest\Engines\Jet Error");
}
}
else
{
ShowMessage("Create the data source error.");
}


}
__finally
{
delete Registry;
}


}
//---------------------------------------------------------------------------
nightfallrove 2003-08-19
  • 打赏
  • 举报
回复
以前有人问过,搜一下吧
GaoLun 2003-08-19
  • 打赏
  • 举报
回复
我K,看错了,我还以为是你要操作注册表的
GaoLun 2003-08-19
  • 打赏
  • 举报
回复
使用TRegistry吧
在头文件中包括#include <Registry.hpp>
//读注册表
TRegistry *RegLiveFpcnR = new TRegistry;
try
{
RegLiveFpcnR->RootKey = HKEY_LOCAL_MACHINE;
if(RegLiveFpcnR->OpenKey("\\Software\\PEFIS\\LiveFPScan32\\Environment",false) != false)
CSpinEdit1->Text = RegLiveFpcnR->ReadInteger("Number Digit");
}
__finally
{
RegLiveFpcnR->CloseKey();
delete RegLiveFpcnR;
}
//写注册表
TRegistry *RegLiveFpcnW = new TRegistry;
try
{
RegLiveFpcnW->RootKey = HKEY_LOCAL_MACHINE;
if(RegLiveFpcnW->OpenKey("\\Software\\PEFIS\\LiveFPScan32\\Environment",false) != false)
RegLiveFpcnW->WriteInteger("Number Digit",StrToInt(CSpinEdit1->Text.c_str()));
}
__finally
{
RegLiveFpcnW->CloseKey();
delete RegLiveFpcnW;
}






//新建一个key

TRegistry *RegLiveFpcnW = new TRegistry;
//String Mykey ="keykey";

try
{
RegLiveFpcnW->RootKey=HKEY_LOCAL_MACHINE;
RegLiveFpcnW->OpenKey("SOFTWARE",false);
if(!RegLiveFpcnW->KeyExists("myproject"))
RegLiveFpcnW->CreateKey("myproject");
RegLiveFpcnW->OpenKey("myproject",false);
RegLiveFpcnW->WriteString("Directory","D:\\exe");//ExtractFilePath(Application->ExeName));
ShowMessage("Succeed!");
}
__finally
{
RegLiveFpcnW->CloseKey();
delete RegLiveFpcnW;
}
}

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧