Exe Informationen ändern

Für allgemeine Fragen zur Programmierung mit PureBasic.
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Exe Informationen ändern

Beitrag von Lambda »

kenn jemand vll ein Snippet das es fertig bringt die Informationen einer Exe zu ändern? (wie Produktname, Version, Copyright etc)

ich habe zwar das hier gefunden: http://www.purebasic.fr/german/viewtopi ... 8&start=10 allerdings funktioniert es in keiner weise.

lg
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Exe Informationen ändern

Beitrag von c4s »

Verwende einfach einen Resource Editor. Ich benutze gerne XNResourceEditor.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: Exe Informationen ändern

Beitrag von Lambda »

Externe Anwendungen sind völlig ausgeschlossen, da mein Programm exe Dateien ausspuckt.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: Exe Informationen ändern

Beitrag von Fluid Byte »

Suche nach Begin-/ EndUpdateResource() im SDK bzw. hier im Forum.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: Exe Informationen ändern

Beitrag von Lambda »

danke, das hat mir schonmal geholfen nur..
das was ich gefunden hab ist der selbe code nur etwas kürzer.. welcher bei mir aber auch nicht funktioniert. Mit und ohne Voreintragung von den Infos. Vll veralteter Code? Verwende PB 4.60 32bit

Code: Alles auswählen

#RT_VERSION = 16

Structure VS_VERSIONINFO
  wLength.w
  wValueLength.w
  wType.w
  szKey.w[16]
  Padding1.w
  Value.VS_FIXEDFILEINFO
  Padding2.w
  Children.w
EndStructure

Procedure.w MakeLangID(p.w, s.w)
  ProcedureReturn (s << 10) | p
EndProcedure

Macro MAKEINTRESOURCE(I)
  (I)
EndMacro

Procedure.l SetFileVersion(AFileName.s, Major.w, Minor.w, Release.w, Build.w)
  Protected lHLib.l, lHRes.l, lHResLoad.l, lPResLock.l
  Protected lSz.l
  Protected lFS.l
  Protected *lpVersionInfo.VS_VERSIONINFO
  Protected *lFV.l ; TFileVer
  Protected lPt.l
  Protected lVer.s
  Protected lVarFileInfo ; Unknown type
  Protected lHResUpd.l
  Protected lDiscard.l
  Protected Result.l
  Result = 0
  If FileSize(AFileName) < 0
    ProcedureReturn Result
  EndIf
  lHLib = LoadLibrary_(AFileName)
  If lHLib = 0
    ProcedureReturn Result
  EndIf
  lHRes = FindResource_(lHlib, MAKEINTRESOURCE(1), #RT_VERSION)
  If lHRes = 0
    FreeLibrary_(lHLib)
    ProcedureReturn Result
  EndIf
  lHResLoad = LoadResource_(lHLib, lHRes)
  lSz = SizeofResource_(lHLib, lHRes)
  If lHResLoad = 0
    FreeLibrary_(lHLib)
    ProcedureReturn Result
  EndIf
  LPResLock = LockResource_(lHResLoad)
  lPt = AllocateMemory(lSz)
  MoveMemory(lPResLock, lPt, lSz)
  FreeLibrary_(lHLib)
 
  *lpVersionInfo = lPt
  With *lpVersionInfo\Value
    \dwFileVersionMS = (Major << 16) | Minor
    \dwFileVersionLS = (Release << 16) | Build
    \dwProductVersionMS = \dwFileVersionMS
    \dwProductVersionLS = \dwFileVersionLS
  EndWith
  lHResUpd = BeginUpdateResource_(AFilename, 0)
  If lHResUpd = 0
    Goto Except
  EndIf
  lDiscard = 1
  lDiscard = -UpdateResource_(lHResUpd, #RT_VERSION, MAKEINTRESOURCE(1), 0, lPt, lSz) + 1
  EndUpdateResource_(lHResUpd, lDiscard)
  Except:
  FreeMemory(lPt)
EndProcedure
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Exe Informationen ändern

Beitrag von ts-soft »

Adminrechte und die Exe darf natürlich nicht gestartet sein.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Exe Informationen ändern

Beitrag von c4s »

Halbwegs Offtopic:
Also wenn wir bereits beim Thema Ändern von Meta-Informationen der Executable sind: Ist euch eine ähnliche Funktion wie BeginUpdateResource_() für das eingebundene Manifest bekannt?
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Exe Informationen ändern

Beitrag von ts-soft »

Es ist genau dieselbe API zu verwenden, lediglich die Parameter ändern sich.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: Exe Informationen ändern

Beitrag von Lambda »

selbst mit Admin-Rechte ändert sich nichts. Ausgeführt wird die zu ändernde Datei natürlich nicht
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Exe Informationen ändern

Beitrag von c4s »

@ts-soft
Danke. Nachdem ich die Frage gestellt hatte viel mir bereits auf, dass es auch eine #RT_MANIFEST-Konstante gibt. Die Antwort lag somit auf der Hand. :allright:

@cOoki3druqs
Eventuell liegt es an diesen merkwürdigen Zeilen (ganz unten) :

Code: Alles auswählen

  lDiscard = 1
  lDiscard = -UpdateResource_(lHResUpd, #RT_VERSION, MAKEINTRESOURCE(1), 0, lPt, lSz) + 1

; Hilft diese Änderung?
  If UpdateResource_(lHResUpd, #RT_VERSION, MAKEINTRESOURCE(1), 0, lPt, lSz)
    lDiscard = #False
  Else
    lDiscard = #True
  EndIf
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Antworten