MFC导入注册表的代码出错

MFC导入注册表的代码出错,第1张

1.可以,附带自己的数据库文件

2.需要

3.打包会对DLL进行单独封装

4.你可以尝试动态创建,动态设定你的数据源信息,包括密码,用户名,这样,你程序中调用相对应的就可以了!

没有渣隐服务器,你是执行补了你的SQL语句的,我给你一个例子,具体你使用什么语言开发,不一样

开发环境下的注册表中的ODBC数据源信息导出到一个文件中,然后将导出的内容作为应用程序中的字符串常量进行保存。在程序运行的时候,检查ODBC数据源的注册情况,如果发现注册不正确,就根据环境的信息和字符串常量动态的确定注册表的内容,写如一个临时的注册表文件中。用批处理文件将该临时文件中的ODBC数据源信息导入到系统如源厅注册表,从而实现了ODBC数据源的动态注册。

*** 作步骤

1.运行注册表编辑器程序(Regedit.exe)。

2.从注册表项\HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources下导出数据源名称信息到Reg1.reg文件中。这个表项下面存放的是用户定义的数据源,如果需要系统数据源信息,则可导出HKEY_Local_Machine\Software\ODBC.INI\ODBC Data Sources到注册文件中。

3.导出要注册的数据源名称的具体连接参数信息到db2.reg中。在此,以导出名称为“PostMdb”的数据为例,具体路径: \HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\PostMdb。

4.用文本编辑器如(NotePad.exe)打开上述db1.reg文件,保留数据源名称为PostMdb的行;并将db2.reg文件内容与当前db1.reg内容合并。假设修改后“PostMdb”数据源注册信息如下:

REGEDIT4

[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources]

〃PostMdb〃=〃Microsoft Access Driver (*.mdb)〃

[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\PostMdb]

〃Driver〃=〃C:\\WINDOWS\\SYSTEM\\ODBCJT32.DLL〃

〃DBQ〃=〃c:\\My Documents\\db1.mdb? r>

〃Description〃=〃Post Card Mis Database〃

〃DriverId〃=dword:00000019

〃FIL〃=〃MS Access〃

〃SafeTransactions〃=dword:00000000

〃UID〃=〃〃

[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\PostMdb\Engines]

[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\PostMdb\Engines\Jet]

〃ImplicitCommitSync〃=〃〃

〃MaxBufferSize〃=dword:00000800

〃PageTimeout〃=dword:00000005

〃Threads〃=dword:00000003

〃UserCommitSync〃=〃Yes〃5.动态注册ODBC数据源的实现从上述注册信息可以看出,对于特定的数据源来说,实际上要动态确定的只是“Driver”和“DBQ”两项内容。将“Driver”=“C:\\WINDOWS\\SYSTEM\\ODBCJT32.DLL”修改为“Driver”=“%s\\ODBCJT32.DLL”,将“DBQ”=“c:\\My Documents\\db1.mdb”修改为“DBQ”=“%s\\db1.mdb”。复制修改后的注册信息到程序单元中存储为一字符串常量,命名为OdbcStr,使用程序调用裂宏即可

其咐橘实我想说…创建VS的ATL COM EXE工程就有整个WINDOWS服务的框架了…在它的代码基础上添加你的逻辑代码就行了;它的框架本身衡迟团就已旦裂经实现了注册和反注册功能,启动也是有的,只是暂停需要你修改一点代码

CString str1

char buff[1024]

typedef int (WINAPI ICEPUB_MACHINEGETINFO)(int typeFlag,char *strInfo)

ICEPUB_MACHINEGETINFO *icePub_machineGetInfo = 0

HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll")

if(hDLLDrv)

{

icePub_machineGetInfo = (ICEPUB_MACHINEGETINFO *)GetProcAddress(hDLLDrv, "icePub_machineGetInfo")

}

UpdateData(TRUE)

icePub_machineGetInfo(1,buff)

str1=buff//mac

icePub_machineGetInfo(2,buff)

str1=str1+buff//cpu

icePub_machineGetInfo(3,buff)

str1=str1+buff//harddisk

icePub_machineGetInfo(4,buff)

str1=str1+buff//memery

icePub_machineGetInfo(5,buff)

str1=str1+buff//boarddate

AfxMessageBox(str1)

//md5到处是坦孙搭代码,搜一下即可

VB版凯迹调用:

Private Declare Function icePub_machineGetInfo Lib "icePubDll.dll"让拿 (ByVal typeFlag As Integer, ByVal strInfo As String) As Integer

Dim str1 As String

Dim a2 As Integer

str1 = Space(1024*10)

a2 = icePub_machineGetInfo(1, str1)

MsgBox "mac:" + str1

a2 = icePub_machineGetInfo(2, str1)

MsgBox "cpu:" + str1

a2 = icePub_machineGetInfo(3, str1)

MsgBox "harddisk:" + str1

a2 = icePub_machineGetInfo(4, str1)

MsgBox "memery:" + str1

a2 = icePub_machineGetInfo(5, str1)

MsgBox "boarddate:" + str1


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12371065.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存