注册表很奇怪的问题,这段代码执行以后会有什么结果?

surefire 2006-11-14 08:55:11
procedure TRegEntity.DeleteKeyFromRegistry;
var
fTempReg:TRegistry;
begin
fTempReg:=TRegistry.Create;
fTempReg.RootKey:=HKEY_LOCAL_MACHINE;
fTempReg.DeleteKey('SOFTWARE\ODBC\ODBC.INI\'+fODBCName); //删除名为fODBCName的ODBC
fTempReg.CloseKey;
fTempReg.OpenKey('SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources\',false);//
fTempReg.DeleteValue(fODBCName); //删掉在控制面板数据源配置框里的显示项
fTempReg.CloseKey;
fTempReg.OpenKey('SOFTWARE\Informix\SqlHosts\',false);//删除Informix客户端的相关配置
fTempReg.DeleteKey(fServer);
fTempReg.CloseKey;
fTempReg.Destroy;
end;

这段代码是我用来删除一些写入注册表的东西,以前执行得好好的,最近竟然一执行就把我注册表Software键下面从ODBC开始的所有子键全部删除掉了,害得我重新安装了两次系统,这是怎么回事?
高手请指点一下,谢谢!
...全文
112 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
surefire 2006-11-14
  • 打赏
  • 举报
回复
fTempReg.OpenKey('SOFTWARE\Informix\SqlHosts\',false);//删除Informix客户端的相关配置
fTempReg.DeleteKey(fServer);
这两条语句把'SOFTWARE\Informix\下的SqlHosts子键全部删掉了。
是不是openKey的时候SqlHosts后面不要加'\'?
surefire 2006-11-14
  • 打赏
  • 举报
回复
哪位敢在自己的机器上试一下不咯,把fodbcname换成odbc下任意一个数据源名称,呵呵,删掉注册表我不负责!
surefire 2006-11-14
  • 打赏
  • 举报
回复
我可以保证没修改两个成员的值,就算修改了,也只会删掉该值对应的键和键值吧,可是我每次执行是把从HKEY_LOCAL_MACHINE\Software\ODBC开始的所有键都删掉了。结果系统重启就开不了机,只能重新安装系统。好郁闷哦!
搞得我这段程序都不敢调试了 。
do2008 2006-11-14
  • 打赏
  • 举报
回复
这个函数本身应该是OK的,

检查一下,是否在程序中别的地方修改了fODBCName,fServer这两天成员的值

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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