Ich habe vor kurzem Unterstützung für unsere Anwendung hinzugefügt. Froh, dass wir unseren Konkurrenten dazu schlagen!
Es gibt neue UIPI Einschränkungen in Windows 8. Die am häufigsten verwendete blockierten Verknüpfung ist Alt + Tab, so dass Sie zu wollen, gehen die Abhilfe zu tun.
Sie müssen Ihre Binärdateien mit uiAccess="true"
im Manifest markieren. (Weitere Informationen dazu finden Sie unter google.) Dieses Manifest verhindert, dass Binärdateien gestartet werden, sofern sie nicht mit einem von Microsoft genehmigten Codesignaturzertifikat signiert und an einem "sicheren Ort" installiert sind (system32 oder Programme/Programmdateien (x86)). .
Wenn Sie Ihr Programm von einem Helfer aus aufrufen: Die uiAccess-Binärdatei kann nicht mit CreateProcess
von einem Medium Integrity-Prozess gestartet werden (das Manifest markiert es als "hohe" Integrität). Stattdessen ist es am einfachsten, es unter Verwendung von ShellExecute
"open" zu starten, um die Shell zu erhöhen. Wenn Sie CreateProcessAsUser
verwenden, müssen Sie TokenUIAccess
auf 1 setzen, indem Sie SetTokenInformation
verwenden, sonst schlägt der Start fehl.
Letzte Vorbehalte: Beachten Sie, dass uiAccess ziemlich stark einschränkt, was ein Prozess tun kann. Sie können keine UI-Eingaben von normalen Prozessen (mittlere Integrität) empfangen, sodass andere Anwendungen nicht mit Ihren Fenstern interagieren können. Wenn Sie nicht bereits die bewährten Methoden zum Trennen Ihrer Benutzeroberfläche in einen separaten Prozess befolgen, wäre dies ein guter Grund, dies zu tun. Alternativ können die Aufgaben, die uiAccess erfordern, auch in eine kleine, in sich geschlossene Hilfsbinärdatei eingefügt und vollständig vom Nicht-UI-Prozess getrennt werden. Ihre Haupt-App kann sie als einen Hilfsprozess mit hoher Integrität ausführen, der Anweisungen zur Ausführung dieser spezifischen Aufgaben sendet (z. B. SendInput
).
Schließlich wird SendInput
funktionieren.
Jetzt bekommen Ihre Mitbewerber hier eine Nachricht. :-) –
Ich bezweifle, dass jemand nur deswegen Programme ändern würde ...;) –
Beachten Sie, dass uiAccess = true das Ziehen und Ablegen von anderen Programmen mit weniger Privilegien verhindern kann. –