| |
VB.NET - Ein- und UmsteigerDateipfad einer fremden EXE ermitteln | | | Autor: Tommi467 | Datum: 10.09.13 12:58 |
| Hallo zusammen,
ich hab da ein Problem, bei dem nicht mehr wirklich weiter komme.
Ich schreibe ein Programm, das auf einer anderen Software basiert.
Diese fremde Software kann nun irgendwo auf der Platte installiert
sein und ich muß herausfinden wo.
Ich habe es schon versucht mit der Funktion FindExecutable und ich bekomme
dort auch Dateinamen und Pfad zurück, allerdings ist es nicht die gewünschte
Exe. Mit dem Ergebnis kann ich leider gar nichts anfangen.
Wie kann ich nur anhand der mir bekannten EXE-Datei den Pfad herausfinden
ohne alle Verzeichnisse rekursiv durchsuchen zu müssen? Hat da jemand noch
eine Idee? Kann ich die Reg irgendwie durchsuchen?
Vielen Dank für eure Tipps
| |
Re: Dateipfad einer fremden EXE ermitteln | | | Autor: Tommi467 | Datum: 10.09.13 14:13 |
| Hallo Manfred,
hab haben wir uns wohl nicht richtig verstanden.
Ich sagte ja, die Function FindExecutable habe ich bereits
getestet und habe dabei, wie du vermutet hast, nicht die
die richtige EXE zurück bekommen.
Den Befehl Process.Start kenne ich auch und nutze ich auch bereits.
Aber da es von der Software unterschiedliche Version gibt und sich
jede anders verhält bzw. gesteuert werden muss, muß ich erst wissen
um welche Version es sich handelt.
Dazu will ich die Dateiinformationen auslesen. Das kann ich aber nur,
wenn ich weiß wo die EXE liegt.
Alles ein bisschen Tricky | |
Re: Dateipfad einer fremden EXE ermitteln | | | Autor: Manfred X | Datum: 10.09.13 14:26 |
| Die "Process"-Klasse besitzt die Eigenschaft "MainModule".
Dort kann der Exe-Filename des gestarteten
Prozesses abgefragt werden.
| |
Re: Dateipfad einer fremden EXE ermitteln | | | Autor: Tommi467 | Datum: 10.09.13 15:04 |
| Vielen Dank Manfred,
hab deinen Tip funktionsfähig realisieren können.
Leider mit einem unzureichenden Ergebnis für mich
Folgenden Script läuft tadellos:
Als myProcessModule.FileName bekomme ich dann den Dateinamen sammt Pfad zurück.
Dim myProcess As New Process()
Dim myProcessStartInfo As New ProcessStartInfo("notepad.exe")
myProcess.StartInfo = myProcessStartInfo
myProcess.Start()
System.Threading.Thread.Sleep(1000)
Dim myProcessModule As ProcessModule
Dim myProcessModuleCollection As ProcessModuleCollection = _
myProcess.Modules
myProcessModule = myProcess.MainModule
Debug.Print("The process's main moduleName is: " + _
myProcessModule.ModuleName)
Debug.Print("The process's main module's base address is: " + _
myProcessModule.BaseAddress.ToString())
Debug.Print("The process's main module's Entry point address is: " + _
myProcessModule.EntryPointAddress.ToString())
Debug.Print("The process's main module's File name is: " + _
myProcessModule.FileName)
myProcess.CloseMainWindow() Wenn ich nun aber Notepad.exe durch den Namen meiner EXE ersetzt,
bekomme ich eine Fehlermeldung:
"Win32Exception wurde nicht behandel.
Das System kann die angegebene Datei nicht finden"
Womit ich leider wieder bei 0 bin
| |
Re: Dateipfad einer fremden EXE ermitteln | | | Autor: Tommi467 | Datum: 11.09.13 12:07 |
|
Hallo Manfred,
noch einmal vielen Dank für deine Hilfe.
In der Zwischenzeit habe ich tatsächlich schon Programmteile getestet, die
die Registry untersuchen. Auch diese funktionieren einwandfrei.
Problem: Der Hersteller legt die Einträge mit jeder Version anders ab, es gibt
keinen Ansatzpunkt, um die Registry auf geeignete weise zu durchforsten.
Das liegt aber nicht am Source sondern einfach an dem bekloppten Hersteller.
Ich habe mich jetzt doch für die Vorgehensweise entscheiden, die
Platte zu durchsuchen. Es ist einfach zuverlässiger und in einem akzeptablen
Zeitrahmen möglich.
Mir wäre es anders auch lieber gewesen, aber an dieser Stelle war es (für mich)
einfach nicht machbar. Aber zumindest beim testen wieder etwas dazu gelernt.
Noch einmal vielen Dank für die Hilfe
| |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|