
02.10.2011, 22:20
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
Цитата:
Сообщение от M.A.D.M.A.N.
Registry.KeyExists вроде. Глянь в справке.
|
В свое время написал такой вот модуль:
Код:
unit RegAutoRun;
interface
uses
Windows, Classes, SysUtils, Registry, Forms;
type
TRegRootKey = (rkUser, rkMachine);
function ReadRegAutoRun(ARegRootKey : TRegRootKey; AKeyName : String = ''; AParams : String = '') : Boolean;
procedure WriteRegAutoRun(ARegRootKey : TRegRootKey; AKeyName : String = ''; AParams : String = '');
procedure DeleteRegAutoRun(ARegRootKey : TRegRootKey; AKeyName : String = '');
implementation
const
cAutoRunKey = 'Software\Microsoft\Windows\CurrentVersion\Run';
function ReadRegAutoRun(ARegRootKey : TRegRootKey; AKeyName : String = ''; AParams : String = '') : Boolean;
var
R : TRegistry;
AKeyValue : String;
ANewKeyValue : String;
begin
Result := False;
R := TRegistry.Create;
Try
If ARegRootKey = rkUser
Then R.RootKey := HKEY_CURRENT_USER
Else R.RootKey := HKEY_LOCAL_MACHINE;
If AKeyName = '' Then AKeyName := ExtractFileName(Application.ExeName);
If R.OpenKeyReadOnly(cAutoRunKey) Then
Begin
If R.ValueExists(AKeyName) Then
Begin
AKeyValue := R.ReadString(AKeyName);
ANewKeyValue := '"' + Application.ExeName + '"';
If AParams <> '' Then ANewKeyValue := ANewKeyValue + ' ' + AParams;
Result := AnsiCompareText(AKeyValue,ANewKeyValue) = 0;
End;
R.CloseKey;
End;
Finally
R.Free;
End;
end;
procedure WriteRegAutoRun(ARegRootKey : TRegRootKey; AKeyName : String = ''; AParams : String = '');
var
R : TRegistry;
AKeyValue : String;
begin
R := TRegistry.Create;
Try
If ARegRootKey = rkUser
Then R.RootKey := HKEY_CURRENT_USER
Else R.RootKey := HKEY_LOCAL_MACHINE;
If AKeyName = '' Then AKeyName := ExtractFileName(Application.ExeName);
If R.OpenKey(cAutoRunKey,True) Then
Begin
AKeyValue := '"' + Application.ExeName + '"';
If AParams <> '' Then AKeyValue := AKeyValue + ' ' + AParams;
R.WriteString(AKeyName,AKeyValue);
R.CloseKey;
End;
Finally
R.Free;
End;
end;
procedure DeleteRegAutoRun(ARegRootKey : TRegRootKey; AKeyName : String = '');
var
R : TRegistry;
begin
R := TRegistry.Create;
Try
If ARegRootKey = rkUser
Then R.RootKey := HKEY_CURRENT_USER
Else R.RootKey := HKEY_LOCAL_MACHINE;
If AKeyName = '' Then AKeyName := ExtractFileName(Application.ExeName);
If R.OpenKey(cAutoRunKey,True) Then
Begin
If R.ValueExists(AKeyName) Then R.DeleteValue(AKeyName);
R.CloseKey;
End;
Finally
R.Free;
End;
end;
end.
|