레지스트리 키를 사용하여 작업하기 위해 하나의 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('Software\MyCompanyName\MyName\')) then
begin
RegistryEntry.Access:= KEY_WRITE or KEY_WOW64_64KEY;
RegistryEntry.OpenKey('Software\MyCompanyName\MyName\',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('Software\MyCompanyName\MyName\')) then
begin
RegistryEntry.Access:= KEY_WRITE or KEY_WOW64_64KEY;
RegistryEntry.OpenKey('Software\MyCompanyName\MyName\',True);
RegistryEntry.WriteString('', '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;
그러나 그것은 또한 효과가 없다.
Q : RegQueryValueEx ('')를 사용해 보셨습니까? 빈 문자열 ('''') 만 있으면된다. Q :이 특정 키 *가 기본값을 가지고 있습니까? RegEdit에서 볼 수 있습니까? – paulsm4
아니요 아니요. RegQueryValueEx 시도하지 않았습니다. 예, ** 기본값 **에 관한 것입니다. –
하지만 @ 루비, 나는 이것을 (어제) 말했습니다 (http://stackoverflow.com/questions/16144046/how-to-set-value-of-registry-key#comment23064639_16144046). 두번. –