AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Trennen von Pfad und Parameter

Ein Thema von almisoft · begonnen am 9. Dez 2008 · letzter Beitrag vom 13. Dez 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von almisoft
almisoft

Registriert seit: 14. Feb 2007
Ort: Berlin
40 Beiträge
 
Delphi 7 Professional
 
#1

Trennen von Pfad und Parameter

  Alt 9. Dez 2008, 20:07
Ich schreibe gerade ein Tool, mit dem man Software deinstallieren kann.
Dazu lese ich die Schlüssel in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Uninstall aus.

Der Pfad zum Deinstallationsprogramm steht im Wert UninstallString. Beispiele:

a. MsiExec.exe /I{EC4455AB-F155-4CC1-A4C5-88F3777F9886}
b. C:\Windows\system32\Macromed\Flash\uninstall_plugi n.exe
c. D:\Programme\Avira\AntiVir PersonalEdition Classic\SETUP.EXE /REMOVE
d. "C:\Program Files\FRITZ!Box Monitor\install.exe" -d

Leider ist im Pfad auch ggf. ein Parameter mit angegeben.
Shellexecute oder Createprocess zum Ausführen des Deinstallationsprogramms erwartet aber den Pfad und die Parameter getrennt.

Frage:
1. Gibt es ggf. einen anderen Befehl neben Shellexecute oder Createprocess, dem ich den ganzen String übergeben kann?
2. Oder gibt es eine verlässliche Funktion, mit der ich Pfad und Parameter trennen kann?
Alexander Miehlke
Alexander Miehlke
Wer Schreibfehler findet, darf sie behalten
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Trennen von Pfad und Parameter

  Alt 9. Dez 2008, 20:14
Sieht so aus als sind das alles Exen. Vielleicht kannste über diesen Weg da was machen.

Edit:
Und ggf. Klassifizieren:
a. Nach /{*} suchen
b. reine exe (ohne Parameter)
c. Nach /* suchen
d. Nach " am Anfang und Ende suchen + -*

* = beliebig viele zeichen
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von almisoft
almisoft

Registriert seit: 14. Feb 2007
Ort: Berlin
40 Beiträge
 
Delphi 7 Professional
 
#3

Re: Trennen von Pfad und Parameter

  Alt 9. Dez 2008, 20:16
Hatte ich mir auch schon überlegt. Aber was ist, wenn einer die Endung weglässt?
Alexander Miehlke
Alexander Miehlke
Wer Schreibfehler findet, darf sie behalten
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: Trennen von Pfad und Parameter

  Alt 9. Dez 2008, 20:19
Zitat von almisoft:
Hatte ich mir auch schon überlegt. Aber was ist, wenn einer die Endung weglässt?
Schauen ob das überhaupt auftreten kann. Ansonsten vielleicht die Möglichkeit einbauen, unbekannte Einträge an dich schicken zu können. (Button: "Unbekannten EIntrag einreichen") Dann kannste das Nachrüsten. Oder eine Konfigurationsdatei.
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von almisoft
almisoft

Registriert seit: 14. Feb 2007
Ort: Berlin
40 Beiträge
 
Delphi 7 Professional
 
#5

Re: Trennen von Pfad und Parameter

  Alt 9. Dez 2008, 20:20
ich wäre mehr für eine elegante Lösung, alles andere scheint eher Flickwerk zu sein.
Habe gerade einen Eintrag ohne Endung gefunden ...
Alexander Miehlke
Alexander Miehlke
Wer Schreibfehler findet, darf sie behalten
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: Trennen von Pfad und Parameter

  Alt 9. Dez 2008, 20:22
Eigentlich ist es doch ganz einfach, mach es so wie Windows das macht:

Der Programmname (Laufwerk, Pfad, Datei) darf keine Leerzeichen enthalten, also ist das erste Leerzeichen der Trenner zwischen Programmname und Parameter.
Ausnahme: Der Programmname muß mit Anführungsstrichen umgeben werden, wenn er doch Leerzeichen enthält.

gelle

EDIT: Obwohl dein Beispiel c da schon wieder abweicht ... aber ob das auch wirklich so in der Registry steht?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Trennen von Pfad und Parameter

  Alt 9. Dez 2008, 20:23
Das würde hier aber nicht funktionieren:
Zitat von almisoft:
D:\Programme\Avira\AntiVir PersonalEdition Classic\SETUP.EXE /REMOVE
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Trennen von Pfad und Parameter

  Alt 9. Dez 2008, 20:24
C entspricht leider keiner Konvention und da wird es schwieriger, aber für A+B+D ... hast du die Delphi-Sourcen?

schau dir mal in der System-Unit die Funktion ParamStr (bzw. GetParamStr) an.


notfalls haben die JEDIs dafür auch was (hab da irgendwo mal die Unicodeversionen gesehn ... läßt sich ja nach ANSI umwandeln)


und den Fall von C ... da gibt's eigentlich nur eine Lösung
(ja, ich weiß, Windows läßt sowas leider zu ... ist halt blöd, wenn es viele Fehler einfach übergeht, anstatt sie als Fehler zu behandeln)

erstes Leerzeichen(oder Stringende) suchen
prüfen ob alles vorm Leerzeichen einer Datei entspricht (z.B. mit Funktion FileExists)
wenn nicht, dann nächstes Leerzeichen suchen und wieder wegleichen .... und solange wiederholen, bis der String abgearbeitet ist
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von almisoft
almisoft

Registriert seit: 14. Feb 2007
Ort: Berlin
40 Beiträge
 
Delphi 7 Professional
 
#9

Re: Trennen von Pfad und Parameter

  Alt 9. Dez 2008, 20:27
Zitat:
1. Gibt es ggf. einen anderen Befehl neben Shellexecute oder Createprocess, dem ich den ganzen String übergeben kann?
Mit WinExec ging das ganz gut, weil WinExec alles frisst, aber unter Vista mit aktivierter UAC klappte es dann wieder nicht...
Alexander Miehlke
Alexander Miehlke
Wer Schreibfehler findet, darf sie behalten
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

Re: Trennen von Pfad und Parameter

  Alt 9. Dez 2008, 20:27
Zitat von himitsu:
C entspricht leider keiner Konvention und da wird es schwieriger, aber für A+B+D ... hat du die Delphi-Sourcen?

schau dir mal in der System-Unit die Funktionen ParamStr (bzw. GetParamStr) an.


notfalls haben die JEDIs dafür auch was (hab da irgendwo mal die Unicodeversionen gesehn ... läßt sich ja nach ANSI umwandeln)


und den Fall von C ... da gibt's eigentlich nur eine Lösung
(ja, ich weiß, Windows läßt sowas leider zu ... ist halt blöd, wenn es viele Fehler einfach übergeht, anstatt sie als Fehler zu behandeln)

erstes Leerzeichen(oder Stringende) suchen
prüfen ob alles vorm Leerzeichen einer Datei entspricht (z.B. mit Funktion FileExists)
wenn nicht, dann nächstes Leerzeichen suchen und wieder wegleichen .... und solange wiederholen, bis der String abgearbeitet ist
irgendwie fühlte ich eine hand in meinem mund ... so war es doch himitsu der mir das wort aus selbigen nahm
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:39 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