체크박스에 체크되어 있으면 레지스트리에 등록하고, 아니면 삭제 할려고 그러는데
삭제가 안돼요.. 소스 어디가 틀린거지요?
procedure Tdirect.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
MyReg:TRegistry;
begin
if CheckBox.Checked then
begin
MyReg:= TRegistry.Create;
MyReg.RootKey := HKEY_LOCAL_MACHINE;
if MyReg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionrun',true) then
MyReg.WriteString('main.exe',Application.ExeName);
MyReg.CloseKey;
MyReg.Free
end
else
begin
MyReg:= TRegistry.Create;
MyReg.RootKey := HKEY_LOCAL_MACHINE;
if MyReg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionrun',true) then
MyReg.DeleteKey('main.exe');
MyReg.CloseKey;
MyReg.Free
end;
end;
DeleteKey는 키를 지우는 겁니다(레지스트리 열어보면 왼쪽에 폴더로 있는거 있죠
그게 키고 오른쪽 에 나오는게 값입니다)
값을 지우실땐 DeleteValue를 사용해야 할겁니다..
파이걸 wrote:
> 체크박스에 체크되어 있으면 레지스트리에 등록하고, 아니면 삭제 할려고 그러는데
> 삭제가 안돼요.. 소스 어디가 틀린거지요?
>
> procedure Tdirect.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
> var
> MyReg:TRegistry;
> begin
> if CheckBox.Checked then
> begin
> MyReg:= TRegistry.Create;
> MyReg.RootKey := HKEY_LOCAL_MACHINE;
> if MyReg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionrun',true) then
> MyReg.WriteString('main.exe',Application.ExeName);
> MyReg.CloseKey;
> MyReg.Free
> end
> else
> begin
> MyReg:= TRegistry.Create;
> MyReg.RootKey := HKEY_LOCAL_MACHINE;
> if MyReg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionrun',true) then
> MyReg.DeleteKey('main.exe');
> MyReg.CloseKey;
> MyReg.Free
> end;
> end;