Ich öffne den Prozess mit PROCESS_QUERY_INFORMATION | PROCESS_VM_READ. Das Öffnen des Prozesses mit PROCESS_QUERY_LIMITED_INFORMATION funktioniert, aber dann schlägt EnumProcessModulesEx fehl. Nach meinen Tests führen sowohl PROCESS_QUERY_INFORMATION als auch PROCESS_VM_READ bei alleiniger Verwendung dazu, dass OpenProcess() für Benutzer mit dem genannten Problem fehlschlägt. Ich glaube auch, dass PROCESS_QUERY_INFORMATION | PROCESS_VM_READ ist für EnumPorcessModulesEx erforderlich, daher ist der Versuch mit weniger Zugriffsrechten keine Option.
Wenn die Anwendung jedoch mit „< strong>Als Administrator ausführen“, tritt dieses Problem nicht mehr auf. OpenProcess() funktioniert und auch die Anwendung funktioniert wie erwartet.
Das Problem
Code: Select all
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processid);
Teillösung
...besteht darin, die Anwendung als Administrator auszuführen. OpenProcess() funktioniert dann gut.
Frage
Warum wird der Zugriff verweigert? einige Benutzer, wenn die Anwendung ohne „Als Administrator ausführen“ ausgeführt wird? Gibt es eine alternative Möglichkeit, eine Liste der Module eines anderen Prozesses abzurufen, ohne meine Anwendung als Administrator auszuführen?