delphi – 如何读取注册表项的默认值
发布时间:2020-12-15 09:40:45 所属栏目:大数据 来源:网络整理
导读:我正在使用一个Delphi XE2项目来处理注册表项.所以我定义了以下代码: procedure TMainForm.BitBtn01Click(Sender: TObject);var RegistryEntry: TRegistry;begin RegistryEntry := TRegistry.Create(KEY_READ or KEY_WOW64_64KEY); RegistryEntry.RootKey:=
我正在使用一个Delphi XE2项目来处理注册表项.所以我定义了以下代码:
procedure TMainForm.BitBtn01Click(Sender: TObject); var RegistryEntry: TRegistry; begin RegistryEntry := TRegistry.Create(KEY_READ or KEY_WOW64_64KEY); RegistryEntry.RootKey:= HKEY_LOCAL_MACHINE; if (not RegistryEntry.KeyExists('SoftwareMyCompanyNameMyName')) then begin RegistryEntry.Access:= KEY_WRITE or KEY_WOW64_64KEY; RegistryEntry.OpenKey('SoftwareMyCompanyNameMyName',True); RegistryEntry.WriteString('','MyFirstProject'); end else begin Memo01.Lines.Add(RegistryEntry.ReadString('(Default)')); //Not Working Memo01.Lines.Add(RegistryEntry.ReadString('')); //Not Working Memo01.Lines.Add(RegistryEntry.ReadString('@')); //Not Working end; RegistryEntry.CloseKey(); RegistryEntry.Free; end; 我的要求是检查“MyName”的默认值并显示在Memo01中.但是什么都没有.所以我尝试了另外一种方法如下: procedure TMainForm.BitBtn01Click(Sender: TObject); var RegistryEntry: TRegistry; RegistryString: string; begin RegistryEntry := TRegistry.Create(KEY_READ or KEY_WOW64_64KEY); RegistryEntry.RootKey:= HKEY_LOCAL_MACHINE; if (not RegistryEntry.KeyExists('SoftwareMyCompanyNameMyName')) then begin RegistryEntry.Access:= KEY_WRITE or KEY_WOW64_64KEY; RegistryEntry.OpenKey('SoftwareMyCompanyNameMyName','MyFirstProject'); end else begin RegistryString := RegistryEntry.ReadString('(Default)'); //Not Working RegistryString := RegistryEntry.ReadString(''); //Not Working RegistryString := RegistryEntry.ReadString('@'); //Not Working Memo01.Lines.Add(RegistryString); end; RegistryEntry.CloseKey(); RegistryEntry.Free; end; 但它也没有用. 解决方法
你的其他部分没有Openkey.
Const C_KEY='SoftwareMyCompanyNameMyName'; var RegistryEntry: TRegistry; RegistryString: string; begin RegistryEntry := TRegistry.Create(KEY_READ or KEY_WOW64_64KEY); try RegistryEntry.RootKey := HKEY_LOCAL_MACHINE; if (not RegistryEntry.KeyExists(C_KEY)) then begin RegistryEntry.Access := KEY_WRITE or KEY_WOW64_64KEY; if RegistryEntry.OpenKey(C_KEY,true) then RegistryEntry.WriteString('','MyFirstProject'); end else begin RegistryEntry.Access := KEY_READ or KEY_WOW64_64KEY; if RegistryEntry.OpenKey(C_KEY,false) then begin Memo01.Lines.Add(RegistryEntry.ReadString('')); end; end; RegistryEntry.CloseKey(); finally RegistryEntry.Free; end; end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |