Вот готовое решение из юнита http://slaur.perm.ru (если не может записать как администратор - записывает только для этого пользователя)
| Код |
Function DeleteKav(St1:string):String; begin if St1='' then Exit; While pos('"',St1)>0 do Delete(St1,pos('"',St1),1); Result:=St1; end;
Procedure AddProgramRun(name,Path,Parametrs:string); var r : TRegistry; begin Path:=DeleteKav(path);Path:='"'+path+'"'; if Parametrs<>'' then path:=path+' '+Parametrs; r:=TRegistry.Create; try R.RootKey:=HKEY_LOCAL_MACHINE; if R.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True) then begin r.WriteString(name,path); end else begin R.RootKey:=HKEY_CURRENT_USER; R.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True); r.WriteString(name,path); end; Finally R.CloseKey; R.Free; end; end;
Procedure DelProgramRun(name:string); var r : TRegistry; begin r:=TRegistry.Create; try R.RootKey:=HKEY_LOCAL_MACHINE; if R.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True) then if r.ValueExists(name) then r.DeleteValue(name); R.CloseKey; R.RootKey:=HKEY_CURRENT_USER; if R.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True) then if r.ValueExists(name) then r.DeleteValue(name); R.CloseKey; Finally R.Free; end; end;
|
|