Delphi 为什么我的注册表写入报告没有错误但没有效果?
我正在尝试在安装服务时创建一个新的系统DSN条目。我试图通过TRegistry.OpenKey和TRegistry.WriteString向注册表写入数据,但没有写入任何值。我要写的三把钥匙中的第一把很好用Delphi 为什么我的注册表写入报告没有错误但没有效果?,delphi,winapi,registry,delphi-7,Delphi,Winapi,Registry,Delphi 7,我正在尝试在安装服务时创建一个新的系统DSN条目。我试图通过TRegistry.OpenKey和TRegistry.WriteString向注册表写入数据,但没有写入任何值。我要写的三把钥匙中的第一把很好用 const sODBCRegKeyLoc = '\SOFTWARE\ODBC\ODBC.INI\OBDC Data Sources'; sServerRegKeyLoc = '\SOFTWARE\ODBC\ODBC.INI\DSN Name'; rInstall := TRegi
const
sODBCRegKeyLoc = '\SOFTWARE\ODBC\ODBC.INI\OBDC Data Sources';
sServerRegKeyLoc = '\SOFTWARE\ODBC\ODBC.INI\DSN Name';
rInstall := TRegistry.Create(KEY_READ or KEY_WRITE);
try
rInstall.RootKey := HKEY_LOCAL_MACHINE;
if rInstall.OpenKey(sRegKeyLoc, True)
then
begin
rInstall.WriteString('Description', 'Monitors for new log entries. Allows modification');
rInstall.CloseKey;
end; //This call works fine.
if rInstall.OpenKey(sODBCRegKeyLoc, True)
then
begin
rInstall.WriteString('DSN Name', 'SQL Native Client');
end; //This call fails with no error message.
if rInstall.OpenKey(sServerRegKeyLoc, True)
then
begin
rInstall.WriteString('Driver','c:\Windows\system32\sqlncli.dll');
rInstall.WriteString('Server','serverIP\SQLEXPRESS');
rInstall.WriteString('Database', 'Databasename');
end; //This call fails with no error message.
finally
rInstall.Free;
end; //Write values to registry.
任何帮助都将不胜感激。想到以下可能的故障模式:
HKLM
下打开用于写入的键失败,但您的代码无法报告该错误李>
HKLM\Software\Wow6432Node
下的32视图中着陆李>
您需要一个应用程序清单来避免虚拟化。您需要使用requestedExecutionLevel
的requireAdministrator
设置
使用
KEY\u WOW64\u 64KEY
指定从32位程序访问64位视图的权限 第三个是有意义的。让我困惑的是,我可以写这3个键中的第一个键,没问题。只有OBDC.INI下的两个键失败。您正在运行进程吗?程序有清单吗?两者都没有。我回家后会试试的,谢谢你的建议。如果没有清单,则第1项适用。您的应用程序运行虚拟化。虚拟化于2006年推出,作为帮助从XP迁移到Vista的支柱。您不应该在2014年运行虚拟化!你真的需要掌握这一点。