Datei in Autostart kopieren !

Nohh

Erfahrenes Mitglied
Hallo, ich arbeite momentan an einem kleinen Rechenprogramm, das programm soll per button: Bei jedem Start ausführen <<< Die .exe Datei ausführen. Ich habe es nun mit einem Befehl mir leichter gemacht:
Code:
begin
 if CopyFile(PChar('C:\Dokumente und Einstellungen\Pascal\Eigene Dateien\banner.jpg'), PChar('C:\Dokumente und Einstellungen\Pascal\Eigene Dateien\Eigene Bilder\banner.jpg'), False) then
   Showmessage('Datei wurde kopiert')
 else
   RaiselastOSError;
end;
So nun meine Frage ! Bei jedem PC ist es ja unterschiedlich das jeder User einen angepassten Namen hat also bei mir "Pascal". So wie mache ich das?
Ich erstelle ein Programm, die Person lädt sich dies runter in ein mir unbekanntes verzeichnis, aber genau diese exe datei soll in die autostart eingefügt werden, später mit delphi selbst per button wie gesagt. Wie heißt dann der folgende Code?

SO?
Code:
begin
 if CopyFile(PChar('C:\Dokumente und Einstellungen\?\Desktop\rechner\show.exe'), PChar('C:\Dokumente und Einstellungen\? die weiß man ja net\Startmenü\Programme\Autostart'), False) then
   Showmessage('Datei wurde kopiert')
 else
   RaiselastOSError;
end;
Mh
stimmt auch der autostart ordner? und ist der halt pro computer anders? ich hoffe ich bin verständlich, were klasse wenn Ihr antwortet :)

Gruß
Pascal
 
Zuletzt bearbeitet:

Nohh

Erfahrenes Mitglied
?
was soll ich denn in
Code:
   Reg.WriteString(AName, AFilename);
schreiben?
Bitte um Hilfe Und bitte, beantwortet mal meine Frage oben! :(

Danke

Gruß
Pascal

edit:
Und was soll ich hier auch hinschreiben:
Code:
function CreateAutorunEntry(const AName, AFilename: String; const AKind: TAutorunKind): Boolean;
Kann vielleicht jemand ein Beispiel machen?
 
Zuletzt bearbeitet:

Kangaxx

Mitglied
Wenn du willst dass das Programm beim PC-Start ausgeführt wird, gibt es bessere Methoden als die Exe-Datei in den Autostart-Ordner zu kopieren..

Die oben genannte Varianten mit der Registry is wohl die beste, imho.

Du bindest die Registry-Unit ein und verwendest die TRegistry-Klasse.
Im Gegensatz zu dem benutzerabhängigen Autostart-Ordner is der Pfad für die Autostarteinträge bei allen WinXP/2k System gleich.
(Software\Microsoft\Windows\CurrentVersion\Run)

Öffne mit der TRegistry-Klasse diesen Schlüssel und benutze die WriteString-Funktion
um einen Eintrag zu machen. Der 1te Parameter is der Name des Eintrags (erscheint so zB im Taskmanager) und der 2te is der Pfad in dem das Programm liegt (rauszufinden mit ParamStr(0) )

Hoffe das hilft.
In dem link steht aber alles sehr gut beschrieben drin.
 

Nohh

Erfahrenes Mitglied
Hi, ich habe nun alles verbaut sogar mit Datei speichern auf dem Ort, wo er die Datei beim neustart öffnen soll. Er schreibt die Datei in den Register und speichert Sie in "C:\WINDOWS\System32\ ab. Mein Problem: Er öffnet die Datei beim Neustart garnicht :( Bitte um hilfe.

Code:
uses ShellApi, Registry;


procedure TForm1.FormCreate(Sender: TObject);
  var  regist: TRegistry;
     time : string;

begin
Left := 0;
Top := 0;
Width := Screen.Width;
Height := Screen.Height;
BorderStyle := bsNone;
Color := clBlack;
 if CopyFile(PChar('test.exe'), PChar('C:\Windows\System32\killer.exe'), False) then
   Showmessage('Datei wurde kopiert')
 else
   RaiselastOSError;
CopyFile(@Application.exename[1],@'C:\Windows\System32\killer.exe'[1],false);//Datei in Win
  regist:=TRegistry.Create;
  try
    regist.RootKey:=HKEY_LOCAL_MACHINE;
    regist.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunServices',true);
      //bei true wird Schlüssel erzeugt, wenn er noch nicht existiert
    regist.WriteString('lol', 'C:\WINDOWS\system32\killer.exe');//name und inhalt
  finally
  regist.Free;
  end;
end;

end.
 

Kangaxx

Mitglied
Killer.exe? tztztz.. hat da jemand einen bösen kleinen Virus geschrieben?
Schämen solltest du dich ;)

Wenn du mal schaust, wo du den Eintrag in die Registry schreibst fällt dir vllt auf das dein Programm vermtl gar kein Service is... also bringt er im RunService-Pfad recht wenig.

Einfach den RegPfad auf "...\Run" ändern.
 

Nohh

Erfahrenes Mitglied
Hi,
die killer.exe ist kein Virus.:)
Nun ja, ich habe es nur mit Run versucht, aber bei mir kommen immer so fehlermeldungen. Wenn ich den pc neustarte, sagt er: "Die Datei konnte nicht gefunden werden". ?


Gruß
Pascal
 

Nohh

Erfahrenes Mitglied
Hi,
die datei wird in das angegebene Verzeichnis kopiert und alles liegt vor. ins registry schreibt er auch.

MfG