Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   *.exe datei aus Delphi heraus umbenennen (https://www.delphipraxis.net/166767-%2A-exe-datei-aus-delphi-heraus-umbenennen.html)

Vukloc 28. Feb 2012 15:37

Delphi-Version: 7

*.exe datei aus Delphi heraus umbenennen
 
Hallo hänge da an einem kleinen Problem und zwar möchste ich nach einer Art Update diverse Dateien umbenennen(damit sie besser zum Projektnamen passen) darunter auch eine *.exe.
Die Textdateien etc sind kein Problem, jedoch versagt die "Routine" bei allen Arten von *.exe Dateien, jetzt ist meine Frage kann man das irgendwie umgehen ?

Hier mal der Codeschnipsel zum umbenennen der Datei
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  Dir: String;
  myExePath : String;
  myApplication : String;
begin
  myExePath := ExtractFilePath(Application.ExeName);
  myApplication := myExePath + 'Projekt.exe';

  if SelectDirectory('Bitte das Projekt XXXXXX Verzeichnis auswählen', '', Dir)
  then
  begin
    RenameFile(dir+'\Daten\log.txt', dir+'\Daten\log.old');
    RenameFile(dir+'\projekt.exe', dir+'\projektV1.exe');
  end;
 
end;
Vielen Dank für eure Hilfe

DeddyH 28. Feb 2012 15:45

AW: *.exe datei aus Delphi heraus umbenennen
 
Und wenn Du statt RenameFile einmal so etwas benutzt, was kommt dabei als Rückgabewert?
Delphi-Quellcode:
function MyRenameFile(const OldName, NewName: string): DWORD;
begin
  if MoveFile(PChar(OldName), PChar(NewName)) then
    Result := 0
  else
    Result := GetLastError;
end;

Luckie 28. Feb 2012 15:59

AW: *.exe datei aus Delphi heraus umbenennen
 
Zitat:

Zitat von Vukloc (Beitrag 1153461)
jedoch versagt die "Routine" bei allen Arten von *.exe Dateien

Und wie manifestiert sich das "Versagen"?

jaenicke 28. Feb 2012 16:43

AW: *.exe datei aus Delphi heraus umbenennen
 
Hast du denn vorher Adminrechte angefordert? Ohne wirst du kaum in dem Verzeichnis eines Programms etwas ändern können. (Eine sachgerechte PC-Konfiguration vorausgesetzt.)

p80286 28. Feb 2012 17:16

AW: *.exe datei aus Delphi heraus umbenennen
 
@Jaenicke
Ich geh mal davon aus, daß das hier nicht notwendig ist,
es scheint sich nicht um das Programme-Verzeichnis zu handeln:
Zitat:

Delphi-Quellcode:
 if SelectDirectory('Bitte das Projekt XXXXXX Verzeichnis auswählen', '', Dir)
  then
  begin
    RenameFile(dir+'\Daten\log.txt', dir+'\Daten\log.old');
    RenameFile(dir+'\projekt.exe', dir+'\projektV1.exe');
  end;

Gruß
K-H

Vukloc 28. Feb 2012 19:27

AW: *.exe datei aus Delphi heraus umbenennen
 
@DeddyH
Vielen Dank, werde das morgen mal antesten und dann bescheid geben.

@ Luckie
Es manifestiert sich so das alle Dateien mit außnahme der Exedatei umbenannt werden.

@jaenicke
Darf ich fragen wie du das expliziet meinst ?
Aber vielleicht hilft dir das weiter, also unter Windows war ich zwecks Testzwecken diesbezüglich als Admin angemeldet.
Aber da es sich nicht um einen geschützten Ordner handelt sollte es doch auch ohne gehen ?

@p80286
also der Ordner war/ist d:\Programme\Stanze
OS liegt auf c:

Luckie 28. Feb 2012 19:54

AW: *.exe datei aus Delphi heraus umbenennen
 
Es fehlt mal wieder eine gescheite Fehlerbehandlung. Was sagt GetLastError, wen Rename False zurückgibt?

DeddyH 29. Feb 2012 07:06

AW: *.exe datei aus Delphi heraus umbenennen
 
Zitat:

Zitat von Luckie (Beitrag 1153526)
Es fehlt mal wieder eine gescheite Fehlerbehandlung. Was sagt GetLastError, wen Rename False zurückgibt?

Was wollte ich mit meinem Code in #2 wohl bezwecken? :roll:

Luckie 29. Feb 2012 07:39

AW: *.exe datei aus Delphi heraus umbenennen
 
Ja du, aber wenn er es schon gemacht hätte, dann hätte er schon entscheidenden Hinweise bekommen können und uns diese auch gleich mitteilen können in seinem ersten Beitrag.

DeddyH 29. Feb 2012 07:43

AW: *.exe datei aus Delphi heraus umbenennen
 
Zitat:

Zitat von Vukloc (Beitrag 1153519)
@DeddyH
Vielen Dank, werde das morgen mal antesten und dann bescheid geben.

Warte doch erst einmal ab.

Vukloc 29. Feb 2012 16:56

AW: *.exe datei aus Delphi heraus umbenennen
 
Hallo und erstmal sorry für die Verspätung, aber leider habe ich im Moment zuhause kein Delphi, kann dafür aber nur zuhause ins Internet. Hoffe das das nächste Woche wieder erledigt ist und dann alle rund läuft.

Als Rückgabewert von MyRenameFile bekomme ich eine 5.

Denke bzw bin ich mir sicher das es an den Adminrechten liegt, habe da heute nochmals was getestet und wenn ich die compilierte Datei (unter Windows 7) mit Rechtsklick-->ausführen als Administrator ausführe dann benennt er mir auch die exe um.

So jetzt muss ich mal schauen wie ich das hinbekomme das das Programm die Adminrechte "beantragt" natürlich mit der Kentniss des Benutzers, gibt es da unterschiede im Bezug auf die verschiedenen Windowsversionen ?

Danke für eure Hilfe

Klaus01 29. Feb 2012 17:03

AW: *.exe datei aus Delphi heraus umbenennen
 
Hallo,

ErrorCode 5 (0x5) ERROR_ACCESS_DENIED
Quelle

Grüße
Klaus

Bummi 29. Feb 2012 17:09

AW: *.exe datei aus Delphi heraus umbenennen
 
Bezüglich des Starts mit erhöhten Rechten .... ob das < Vista auch funktioniert weiß ich nicht ...

Delphi-Quellcode:
 shellexecute(handle,'RunAs','C:\temp\DeinProgramm.exe','','',sw_Show);
 Application.Terminate;

p80286 29. Feb 2012 17:14

AW: *.exe datei aus Delphi heraus umbenennen
 
Zitat:

Zitat von Vukloc (Beitrag 1153693)
Denke bzw bin ich mir sicher das es an den Adminrechten liegt, habe da heute nochmals was getestet und wenn ich die compilierte Datei (unter Windows 7) mit Rechtsklick-->ausführen als Administrator ausführe dann benennt er mir auch die exe um.

Also Du willst sowohl Daten als auch Programm-Dateien die unter c:\Programme liegen, umbenennen?

Zum einen gehören Parameterdateien,Tempdateien usw NICHT in den "Programme"-Ordner!!
Entweder Du hällst Dich an die Vorgaben von Microsoft, Dann landen die Daten irgendwo unter C:\Benutzer oder Du machst Dein eigenes Ding "C:\MeinSuperprogramm".
Im zweiten Fall kannst Du Zugriffsrechte vergeben wie Du lustig bist und kommst niemanden in die Quere. Nachteil ist, das normal gestrickte Programme nicht damit rechnen, daß es jemanden gibt der sich ausserhalb der von MS vorgegebenen Pfade bewegt.

Zum zweiten hat der eingeschränkte Zugriff auf C:\Programme mit dem Adminitrator eigentlich nichts zu tun, der Administrator hat bei MS nur das Recht sich jedes Recht zu holen.
Was Du benötigst, ist das Recht Dateien umzubenennen. Das kann jeder Benutzer erhalten, wenn man will. Aber bevor Du solche Änderungen vornimmst, solltest Du Dich fragen, ob das was Du vorhast auch wirklich so sinnvoll ist.

Gruß
K-H

DeddyH 29. Feb 2012 17:29

AW: *.exe datei aus Delphi heraus umbenennen
 
Es kann aber auch schlicht sein, dass die Programme gerade laufen, dann ist ein Umbenennen auch nicht möglich (selber Fehlercode IIRC).

Vukloc 29. Feb 2012 18:16

AW: *.exe datei aus Delphi heraus umbenennen
 
Ne habs ja getestet Starten per Rechtsklick -> Als Admin ausführen und es klappt, starten per Doppelklick das umbenennen der exe klappt nicht.

Desweietern handelt es sich nicht um Parameterdateien, Tempdateien oder sonstiges.

Der Sinn ist, in ein bestehendes Projekt/Programm (bereits installiert) werden einige bearbeitete Grafiken eingefügt und im gleichen Schritt soll die Startdatei für das Programm umbenannt werden damit ersichtlich ist das die neuen Grafiken vorliegen, die Änderungen sind zum teil so winzig das sie beim betrachten nicht direkt ins Auge fallen.

Delphi-Quellcode:
shellexecute(handle,'RunAs','C:\temp\DeinProgramm.exe','','',sw_Show);
 Application.Terminate;
Muss ich dann auch morgen mal antesten.

Danke

Luckie 29. Feb 2012 19:12

AW: *.exe datei aus Delphi heraus umbenennen
 
Da wird sich der Anwender aber freuen, wenn bei ihm keine Verknüpfungen mehr funktionieren. Und ich als Admin würde den Programmierer in den Pop treten, wenn ich die Verknüfungen auf allen Rechnern wieder in Ordnung bringen dürfte.

p80286 29. Feb 2012 23:19

AW: *.exe datei aus Delphi heraus umbenennen
 
Jo, diese DOS-Mentalität ist nicht auszurotten.
Man muß Windows nicht unbedingt lieben und alles gut finden was dazu gehört, aber ein wenig an die Spielregeln halten ist meist kein Fehler.

Gruß
K-H

himitsu 29. Feb 2012 23:36

AW: *.exe datei aus Delphi heraus umbenennen
 
Der User weiß nicht welche Version installiert ist?

Da frage ich mich, wozu es z.B. die Versions-Ressource gibt.

Außerdem kann diese Verzeichnis doch nur absichtlich verändert werden (wenn man die Rechte gewährt), womit man dann eigentlich auch weiß, was man grade installiert/updated.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz