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

解决方案 »

  1.   

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

  2.   

    http://blog.csdn.net/shape2100/article/details/7291708
      

  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位系统的标志!!!