win7 64位注册表

时间:2022-09-04 14:12:09
奇怪啊,原来项目中注册数据源是在HKEY_LOCAL_MACHINE\Odbc下,打开看后是空的,但程序却可以正常运行,搜索了一下注册表,原来被移到HKEY_LOCAL_MACHINE\odbc\Wow6432Node下了,为什么仍然有效呢?

6 个解决方案

#1


odbc有windows管理,微软当然知道去哪找了

#3


 这是我注册数据源代码:  
   Reg:=TRegistry.Create;
   Reg.RootKey:=HKEY_LOCAL_MACHINE;
   Reg.OpenKey('Software\ODBC\ODBC.INI\Hospital',true);
   Reg.WriteString('Driver',ls_currdir+'\dbodbc8.dll');
   Reg.WriteString('UID','DBA');
   Reg.WriteString('EngineName','Hospital');
   Reg.WriteString('AutoStop','Yes');
    …………
   Reg.OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',true);
   Reg.WriteString('Hospital','Adaptive Server Anywhere 8.0');
   Reg.CloseKey;
   Reg.Free;
明明是写在Software\ODBC\ODBC.INI下,却被win7自动移至HKEY_LOCAL_MACHINE\Wow6432Node\odbc\ODBC.INI下,但程序可以正常运行。

#4


看看2L的链接吧。

相当于读写注册表被win7自动重定向了!!!
Delphi的TRegistry类除了OpenKeyReadOnly外,其他方法都没有指定那个64位系统的标志!!!

#5


LZ阿谀逢迎丑态毕露,无视真理,真尼玛可悲!

#6


不会就免开尊口,别误人子弟了
引用 1 楼  的回复:
odbc有windows管理,微软当然知道去哪找了

#1


odbc有windows管理,微软当然知道去哪找了

#2


#3


 这是我注册数据源代码:  
   Reg:=TRegistry.Create;
   Reg.RootKey:=HKEY_LOCAL_MACHINE;
   Reg.OpenKey('Software\ODBC\ODBC.INI\Hospital',true);
   Reg.WriteString('Driver',ls_currdir+'\dbodbc8.dll');
   Reg.WriteString('UID','DBA');
   Reg.WriteString('EngineName','Hospital');
   Reg.WriteString('AutoStop','Yes');
    …………
   Reg.OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',true);
   Reg.WriteString('Hospital','Adaptive Server Anywhere 8.0');
   Reg.CloseKey;
   Reg.Free;
明明是写在Software\ODBC\ODBC.INI下,却被win7自动移至HKEY_LOCAL_MACHINE\Wow6432Node\odbc\ODBC.INI下,但程序可以正常运行。

#4


看看2L的链接吧。

相当于读写注册表被win7自动重定向了!!!
Delphi的TRegistry类除了OpenKeyReadOnly外,其他方法都没有指定那个64位系统的标志!!!

#5


LZ阿谀逢迎丑态毕露,无视真理,真尼玛可悲!

#6


不会就免开尊口,别误人子弟了
引用 1 楼  的回复:
odbc有windows管理,微软当然知道去哪找了