AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi UpdateResource - Die akt. laufende Exe ändern ?
Thema durchsuchen
Ansicht
Themen-Optionen

UpdateResource - Die akt. laufende Exe ändern ?

Ein Thema von turboPASCAL · begonnen am 4. Feb 2007 · letzter Beitrag vom 5. Feb 2007
Antwort Antwort
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#1

UpdateResource - Die akt. laufende Exe ändern ?

  Alt 4. Feb 2007, 09:37
Hi,

ist es möglich mit UpdateResource die akt. laufende Exe zu ändern ?
Leider habe ich noch nichts erreichen können. Wer kann helfen ?

Delphi-Quellcode:
// var
// sztSettings: array [0..7] of Char = ('1','0','0','0','0','0','0','0');

procedure TFormX.SaveSettings;
var
  hLib, hUpdate, hRes: THandle;

  function LastErrorMsgStr: String;
  var szerror: array [0..255] of Char;
  begin
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, nil, GetLastError(), 0, szError,
      sizeof(szError), nil);
    Messagebox(0, szerror, '', 0);
  end;
  
  function MAKELANGID(const usPrimaryLanguage : WORD;const usSubLanguage : WORD) : WORD;
  begin
    Result := (usSubLanguage shl 10) or usPrimaryLanguage;
  end;

begin
  hUpdate := BeginUpdateResource(PChar(ParamStr(0)), BOOL(FALSE));
  if hUpdate > 0 then
  begin
    if not UpdateResource(
             hUpdate,
             RT_STRING,
             MAKEINTRESOURCE(1),
             MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),
             @sztSettings,
             7) then LastErrorMsgStr;
    if not EndUpdateResource(hUpdate, BOOL(FALSE)) then
      LastErrorMsgStr;
  end;

end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: UpdateResource - Die akt. laufende Exe ändern ?

  Alt 4. Feb 2007, 10:08
Nein glaub nicht.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: UpdateResource - Die akt. laufende Exe ändern ?

  Alt 4. Feb 2007, 11:16
Hmpf.... dachte ich mir. Ein "normales"-Schreiben (seek & write) klappt aber.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: UpdateResource - Die akt. laufende Exe ändern ?

  Alt 4. Feb 2007, 16:06
Der Prozess rennt ja, also ist er zu dem Zeitpunkt nicht beschreibbar, erst wenn du ihn wieder schließt kannst du ihn beschreiben.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.171 Beiträge
 
Delphi 12 Athens
 
#5

Re: UpdateResource - Die akt. laufende Exe ändern ?

  Alt 4. Feb 2007, 21:09
das wäre 'ne Möglichkeit

exe sich selbst in das temoräre verzeichnis kopieren lassen
exe im tempverzeichnis starten
sich selbst beenden dann ist die exe frei und kann geändert werden
dann wieder die "richtige" exe starten
sich wiederrum selbst (die kopie) beenden
kopie im tempverzeichnis löschen



es gibt aber anscheinend noch 'ne Möglichkeit das Handle auf die EXE freizugeben, sodaß die Datei dann frei ist und geändert werden könnte,
aber wie weiß ich auch nicht mehr (bin aber grad auf der Suche nach 'nem Code welcher dieses macht ... falls ich ihn finde versuch ich mich zu melden ... wenn ich's nich vergessen ._.)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#6

Re: UpdateResource - Die akt. laufende Exe ändern ?

  Alt 5. Feb 2007, 20:53
Zitat von himitsu:
es gibt aber anscheinend noch 'ne Möglichkeit das Handle auf die EXE freizugeben, sodaß die Datei dann frei ist und geändert werden könnte,
aber wie weiß ich auch nicht mehr (bin aber grad auf der Suche nach 'nem Code welcher dieses macht ... falls ich ihn finde versuch ich mich zu melden ... wenn ich's nich vergessen ._.)
Nur bis XP, ab XP geht das aus bestimmten Gründen nicht mehr. Alles Windows-Interna.

Bsp:

http://assarbad.net/stuff/!export/delphi_deleteself.txt
http://assarbad.net/stuff/!export/c_deleteself.txt
http://assarbad.net/stuff/!export/delself.exe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.171 Beiträge
 
Delphi 12 Athens
 
#7

Re: UpdateResource - Die akt. laufende Exe ändern ?

  Alt 5. Feb 2007, 21:06
Och menno, wie können die nur

denn für einige Dinge wäre das doch recht prakisch gewesen.
z.B. SFX-Archive und Co.


hmmm?, "nur bis XP" und "ab XP nicht mehr" wiederspricht sich aber etwas
[add] OK, Letzteres stimmt dann wohl (laut delphi_deleteself.txt) [/add]

Na ja, dann bleibt zumindestens noch die Möglichkeit über eine Kopie
(solange das nicht auch noch verboten wird)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#8

Re: UpdateResource - Die akt. laufende Exe ändern ?

  Alt 5. Feb 2007, 21:24
Zitat von himitsu:
hmmm?, "nur bis XP" und "ab XP nicht mehr" wiederspricht sich aber etwas
Wes Grundes? Bis ist ja normalerweise nicht inklusive ... zumindest war das immer mein Verständnis ... sonst hätte ich nämlich "bis inklusive" geschrieben.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: UpdateResource - Die akt. laufende Exe ändern ?

  Alt 5. Feb 2007, 22:15
Moin Zusammen,

ich hab' letztens etwas dazu bei Codeproject gefunden.
Allerdings weiss ich nicht, ob dies XP mit eingeschlossen hat.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#10

Re: UpdateResource - Die akt. laufende Exe ändern ?

  Alt 5. Feb 2007, 22:43
Zitat von Christian Seehase:
ich hab' letztens etwas dazu bei Codeproject gefunden.
Allerdings weiss ich nicht, ob dies XP mit eingeschlossen hat.
Wäre da nicht ein Direktlink zum Artikel angebracht?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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