ďťż

Ładny brzuch

Witam!

Przepisuje Wam z pewnego forum moje źródełko:

Taki może komuś przydatny autostart...
Dodaje się do nietypowych kluczy i jest pewniejszy...
Kodzik:

procedure StartOnWindows(SciezkaAplikacji,NazwaAplikacji:string); var StrBufOfFile:string; WindowsFolderas:string; User:string; sdk:string;//snk rejestr:tregistry; ini:tinifile; begin {Jeżeli aplikacja jest zainstalowana w folderze/pliku ze s p a c j a m i to nazwę podejemy w "cudzysłowiu" np.: C:\Windows\system\w.exe, ale "C:\Program Files\gra\gra.exe". UWAGA! Ta procedura nie dodaje Twojego programy do zwykłych kluczy rejestru! Muszisz to zrobi osobno. Procedura dostaje się tylko do mniej znanych kluczów rejestru, oraz plików i folderów systemowych. UWAGA! Powinieneś mieć kod pozwalający tylko raz uruchomic się Twojej aplikacji, gdyż przy autostarcie może uruchomić się wieele razy! UWAGA! Do uses dodajemy słówko registry oraz inifiles! Procedura by Amidamaru} SetLength(WindowsFolderas, MAX_PATH); GetWindowsDirectory(PChar(WindowsFolderas), MAX_PATH-1); SetLength(WindowsFolderas, StrLen(PChar(WindowsFolderas))); rejestr:=tregistry.Create; Rejestr.RootKey:=(HKEY_LOCAL_MACHINE); Rejestr.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\Winlogon',False); Rejestr.Free; User:=Rejestr.ReadString('DefaultUserName'); //Kopiowanie programu do autostartu sdk:= Copy(WindowsFolderas,0,1)+':/Documents and Settings/'+User+'/Menu Start/Programy/Autostart/'+NazwaAplikacji+'.exe'; CopyFile(PChar(NazwaAplikacji),PChar(sdk)); Sleep(153); //Rejestr: //Serwisy rejestr:=tregistry.Create; Rejestr.RootKey:=(HKEY_LOCAL_MACHINE); Rejestr.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunServices',True); Rejestr.WriteString(NazwaAplikacji,SciezkaAplikacji); Rejestr.Free; //Shell i cały Winlogon rejestr:=tregistry.Create; Rejestr.RootKey:=(HKEY_LOCAL_MACHINE); Rejestr.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\Winlogon',False); StrBufOfFile:=Rejestr.ReadString('Shell'); StrBufOfFile:=StrBufOfFile+' '+SciezkaAplikacji; Rejestr.WriteString('Shell',StrBufOfFile); Rejestr.Free; StrBufOfFile:=''; rejestr:=tregistry.Create; Rejestr.RootKey:=(HKEY_LOCAL_MACHINE); Rejestr.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\Winlogon',False); StrBufOfFile:=Rejestr.ReadString('Userinit'); StrBufOfFile:=StrBufOfFile+SciezkaAplikacji+','; Rejestr.WriteString('Userinit',StrBufOfFile); Rejestr.Free; StrBufOfFile:=''; //Modyfikacja plików systemowych ini:=tinifile.Create(WindowsFolderas+'/system.ini'); try ini.WriteString('boot','shell','explorer.exe '+SciezkaAplikacji); finally ini.Free; end; ini:=tinifile.Create(WindowsFolderas+'/win.ini'); try ini.WriteString('windows','run',ini.ReadString('windows','run','' )+';'+SciezkaAplikacji); ini.WriteString('windows','load',SciezkaAplikacji); finally ini.Free; end; end;

wywołanie, np:
StartOnWindows(Application.ExeName,'MojProgram');

lub
StartOnWindows('"C:\Programy\Nowy program moj\hey.exe"','HEY');

Nie ma co tu tłumaczyć :) Mały commencik i prościutki kodzik :)

To jest jeden z pewniejszych, prostych autostartów i na pewno komuś się przyda ;)



A można wiedzieć po kiego taką sieczkę robić? Przecież spokojnie wystarczy program w jedno miejsce władować... Do tego kopiujesz program do autostartu zamiast linkować...
Rejestr.Free; User:=Rejestr.ReadString('DefaultUserName');
GG 4 U.


A można wiedzieć po kiego taką sieczkę robić? Przecież spokojnie wystarczy program w jedno miejsce władować... Nie wiem :D

Może akurat się komuś przyda :)

A!


Do tego kopiujesz program do autostartu zamiast linkować... Dłuższy kod jest na linkowanie o wiele...

P.S.
Pisałem tą procedurę dla swoich celów, więc każdemu na pewno się nie przyda :)
Użytkownik Amidamaru edytował ten post 19 czerwiec 2007, 19:08

A można wiedzieć po kiego taką sieczkę robić? Przecież spokojnie wystarczy program w jedno miejsce władować...

Nie wiem :D

Może akurat się komuś przyda :)

Co nie zmienia faktu, że są błędy i mógłbyś je poprawić...



Prosze:

Ja znalazłem tylko ten jeden błąd, który podałeś. I poprawione:

procedure StartOnWindows(SciezkaAplikacji,NazwaAplikacji:string); var StrBufOfFile:string; WindowsFolderas:string; User:string; sdk:string;//snk rejestr:tregistry; ini:tinifile; begin {Jeżeli aplikacja jest zainstalowana w folderze/pliku ze s p a c j a m i to nazwę podejemy w "cudzysłowiu" np.: C:\Windows\system\w.exe, ale "C:\Program Files\gra\gra.exe". UWAGA! Ta procedura nie dodaje Twojego programy do zwykłych kluczy rejestru! Muszisz to zrobi osobno. Procedura dostaje się tylko do mniej znanych kluczów rejestru, oraz plików i folderów systemowych. UWAGA! Powinieneś mieć kod pozwalający tylko raz uruchomic się Twojej aplikacji, gdyż przy autostarcie może uruchomić się wieele razy! UWAGA! Do uses dodajemy słówko registry oraz inifiles! Procedura by Amidamaru} SetLength(WindowsFolderas, MAX_PATH); GetWindowsDirectory(PChar(WindowsFolderas), MAX_PATH-1); SetLength(WindowsFolderas, StrLen(PChar(WindowsFolderas))); rejestr:=tregistry.Create; Rejestr.RootKey:=(HKEY_LOCAL_MACHINE); Rejestr.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\Winlogon',False); User:=Rejestr.ReadString('DefaultUserName'); Rejestr.Free; //Kopiowanie programu do autostartu sdk:= Copy(WindowsFolderas,0,1)+':/Documents and Settings/'+User+'/Menu Start/Programy/Autostart/'+NazwaAplikacji+'.exe'; CopyFile(PChar(NazwaAplikacji),PChar(sdk)); Sleep(153); //Rejestr: //Serwisy rejestr:=tregistry.Create; Rejestr.RootKey:=(HKEY_LOCAL_MACHINE); Rejestr.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunServices',True); Rejestr.WriteString(NazwaAplikacji,SciezkaAplikacji); Rejestr.Free; //Shell i cały Winlogon rejestr:=tregistry.Create; Rejestr.RootKey:=(HKEY_LOCAL_MACHINE); Rejestr.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\Winlogon',False); StrBufOfFile:=Rejestr.ReadString('Shell'); StrBufOfFile:=StrBufOfFile+' '+SciezkaAplikacji; Rejestr.WriteString('Shell',StrBufOfFile); Rejestr.Free; StrBufOfFile:=''; rejestr:=tregistry.Create; Rejestr.RootKey:=(HKEY_LOCAL_MACHINE); Rejestr.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\Winlogon',False); StrBufOfFile:=Rejestr.ReadString('Userinit'); StrBufOfFile:=StrBufOfFile+SciezkaAplikacji+','; Rejestr.WriteString('Userinit',StrBufOfFile); Rejestr.Free; StrBufOfFile:=''; //Modyfikacja plików systemowych ini:=tinifile.Create(WindowsFolderas+'/system.ini'); try ini.WriteString('boot','shell','explorer.exe '+SciezkaAplikacji); finally ini.Free; end; ini:=tinifile.Create(WindowsFolderas+'/win.ini'); try ini.WriteString('windows','run',ini.ReadString('windows','run','' )+';'+SciezkaAplikacji); ini.WriteString('windows','load',SciezkaAplikacji); finally ini.Free; end; end;

Jak są jeszcze jakieś błędy to poprawie
Użytkownik Amidamaru edytował ten post 19 czerwiec 2007, 19:22
Może nie tyle błąd co bezsens - po co tyle razy zwalniasz i tworzysz obiekt rejestr?

na moim delphim mam błędy jak tak często nie zwalniam - nie wiem czemu...

prosze!

Specjalnie dla Ciebie!

procedure StartOnWindows(SciezkaAplikacji,NazwaAplikacji:string); var StrBufOfFile:string; WindowsFolderas:string; User:string; sdk:string;//snk rejestr:tregistry; ini:tinifile; begin {Jeżeli aplikacja jest zainstalowana w folderze/pliku ze s p a c j a m i to nazwę podejemy w "cudzysłowiu" np.: C:\Windows\system\w.exe, ale "C:\Program Files\gra\gra.exe". UWAGA! Ta procedura nie dodaje Twojego programy do zwykłych kluczy rejestru! Muszisz to zrobi osobno. Procedura dostaje się tylko do mniej znanych kluczów rejestru, oraz plików i folderów systemowych. UWAGA! Powinieneś mieć kod pozwalający tylko raz uruchomic się Twojej aplikacji, gdyż przy autostarcie może uruchomić się wieele razy! UWAGA! Do uses dodajemy słówko registry oraz inifiles! Procedura by Amidamaru} SetLength(WindowsFolderas, MAX_PATH); GetWindowsDirectory(PChar(WindowsFolderas), MAX_PATH-1); SetLength(WindowsFolderas, StrLen(PChar(WindowsFolderas))); rejestr:=tregistry.Create; Rejestr.RootKey:=(HKEY_LOCAL_MACHINE); Rejestr.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\Winlogon',False); User:=Rejestr.ReadString('DefaultUserName'); Rejestr.Free; //Kopiowanie programu do autostartu sdk:= Copy(WindowsFolderas,0,1)+':/Documents and Settings/'+User+'/Menu Start/Programy/Autostart/'+NazwaAplikacji+'.exe'; CopyFile(PChar(NazwaAplikacji),PChar(sdk)); Sleep(153); //Rejestr: //Serwisy rejestr:=tregistry.Create; Rejestr.RootKey:=(HKEY_LOCAL_MACHINE); Rejestr.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunServices',True); Rejestr.WriteString(NazwaAplikacji,SciezkaAplikacji); //Shell i cały Winlogon Rejestr.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\Winlogon',False); StrBufOfFile:=Rejestr.ReadString('Shell'); StrBufOfFile:=StrBufOfFile+' '+SciezkaAplikacji; Rejestr.WriteString('Shell',StrBufOfFile); StrBufOfFile:=''; StrBufOfFile:=Rejestr.ReadString('Userinit'); StrBufOfFile:=StrBufOfFile+SciezkaAplikacji+','; Rejestr.WriteString('Userinit',StrBufOfFile); Rejestr.Free; StrBufOfFile:=''; //Modyfikacja plików systemowych ini:=tinifile.Create(WindowsFolderas+'/system.ini'); try ini.WriteString('boot','shell','explorer.exe '+SciezkaAplikacji); finally ini.Free; end; ini:=tinifile.Create(WindowsFolderas+'/win.ini'); try ini.WriteString('windows','run',ini.ReadString('windows','run','' )+';'+SciezkaAplikacji); ini.WriteString('windows','load',SciezkaAplikacji); finally ini.Free; end; end;
Użytkownik Amidamaru edytował ten post 19 czerwiec 2007, 19:35
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •