Forum: Win32/Win64 API (native code)
by Zacherl,
4. Aug 2015
Dalai hat schon das richtige Stichwort gegeben :) Wenn du in deinem 32 Bit Ersatzexplorer in das C:\Windows\System32 Verzeichnis navigierst, landest du in Wirklichkeit (vollkommen transparent) aber in C:\Windows\SysWow64.
Das System lenkt Zugriffe von 32 Bit Prozessen auf den System32 Ordner automatisch nach SysWow64 um, damit Dlls und andere Resourcen ohne viel Aufwand vom Programm geladen...
Forum: Win32/Win64 API (native code)
by Zacherl,
3. Aug 2015
Ja klar, die Prozesspfade hat das System selbstverständlich. Ich werde das gleich selbst mal testen. Bei mir zumindest liegt die cdrom.sys allerdings an genau der genannten Stelle (C:\Windows\system32\drivers\cdrom.sys).
Mein nicht optimierter, auf die Schnelle zusammengeschusterter Testcode:
procedure PrintServicePaths(IncludeDrivers, IncludeInactive: Boolean);
type
ENUM_SERVICE_STATUSW...
Forum: Win32/Win64 API (native code)
by Zacherl,
1. Aug 2015
IsWow64Process funktioniert definitiv auch bei Services. Dass du für bestimmte Services keine PID bekommst, liegt wie gesagt daran, dass der entsprechende Service momentan nicht ausgeführt wird.
Musst du denn auch für inaktive Services ermitteln können, ob es sich um einen 32 oder 64 Bit Prozess handelt? Bzw. was genau ist das Problem mit GetServiceExecutablePath? Konnte dir da nicht ganz...
Forum: Win32/Win64 API (native code)
by Zacherl,
1. Aug 2015
Das sind die Dienste, die zur Zeit nicht laufen :D EnumServicesEx gibt dir auch eine Liste aller Services. Darunter auch die inaktiven oder deaktivierten. Das musst du filtern, wenn du nur die Laufenden haben willst.