Benutzer mit den meisten Antworten
Macht SetWindowsHookEx Probleme unter Windows 7?

Frage
-
Hallo zusammen,
vor einigen Jahren habe ich eine Software mit Visual Studio 6 und C++ entwickelt. Dafür habe ich mir eine Bibliothek programmiert die für mich das Thema Hook abhandelt.
Jetzt teste ich die Software gerade unter Windows 7. Nun habe ich festgestellt, dass die SetWindowsHook eine NULL zurück gibt. Ich verwende den WH_JOURNALRECORD.
Weiß jemand ob das unter Windows 7 ein prinzipielles Problem ist? Oder funktioniert das unter Windows 7 anderst oder garnicht mehr?
Danke für Eure Hilfe !
Karsten
Antworten
-
UAC deaktivieren:
http://www.tobbis-blog.de/microsoft/anleitungen/2009-02-11-uac-unter-windows-7-deaktivieren/
Um die Privilegien zu erhöhen brauchst Du ein Manifest welches so aussieht:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?> <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level='requireAdministrator' uiAccess='false' /> </requestedPrivileges> </security> </trustInfo> </assembly>
Dies muss in einer Textdatei stehen, die genau so heisst wie Deine EXE nur mit ".manifest" angefügt (also z.B. "meine.exemanifest"); und sie muss natürlich im gleichen Verzeichnis wie die EXE liegen.
Jochen Kalmbach (MVP VC++)- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 22. Dezember 2009 14:18
-
UAC deaktvieren oder Deinen Prozess mit den entsprechenden Rechten starten... (z.B. in VS2008 in den Projekteinstellungen das "requireAdministrator" setzen)...
Jochen Kalmbach (MVP VC++)- Als Antwort vorgeschlagen Martin RichterModerator Montag, 21. Dezember 2009 08:21
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 22. Dezember 2009 14:18
Alle Antworten
-
Und ich gehe davon aus, dass Du Deinen eigenen Prozess aufzeichnest, oder?
Wenn es ein Fremdprozess ist, dann kommt ab Vista natürlich UIPI ins Spiel ;)
Siehe:
http://blogs.msdn.com/vishalsi/archive/2006/11/30/what-is-user-interface-privilege-isolation-uipi-on-vista.aspx
http://msdn.microsoft.com/en-us/library/aa905330.aspx
Dein Prozess braucht min. die gleichen Privilegien wie der zu hookende Prozess...
Jochen Kalmbach (MVP VC++) -
UAC deaktvieren oder Deinen Prozess mit den entsprechenden Rechten starten... (z.B. in VS2008 in den Projekteinstellungen das "requireAdministrator" setzen)...
Jochen Kalmbach (MVP VC++)- Als Antwort vorgeschlagen Martin RichterModerator Montag, 21. Dezember 2009 08:21
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 22. Dezember 2009 14:18
-
Um den Prozess mit den entsprechenden Rechten zu starten, welches Flag muss ich dann noch zusätzlich setzen ?
(ich verwende noch das VS 6)
Die Variante um den UAC zu deaktivieren hört sich auch gut an. Welchen Dienst muss ich da beenden ?
Danke für eure Hilfe
Grüße
Karsten -
UAC deaktivieren:
http://www.tobbis-blog.de/microsoft/anleitungen/2009-02-11-uac-unter-windows-7-deaktivieren/
Um die Privilegien zu erhöhen brauchst Du ein Manifest welches so aussieht:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?> <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level='requireAdministrator' uiAccess='false' /> </requestedPrivileges> </security> </trustInfo> </assembly>
Dies muss in einer Textdatei stehen, die genau so heisst wie Deine EXE nur mit ".manifest" angefügt (also z.B. "meine.exemanifest"); und sie muss natürlich im gleichen Verzeichnis wie die EXE liegen.
Jochen Kalmbach (MVP VC++)- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 22. Dezember 2009 14:18