AssignProcessToJobObject schlägt mit „Zugriff verweigert“ Fehlermeldung, wenn unter dem Debugger ausgeführt wird

StackOverflow https://stackoverflow.com/questions/89588

  •  01-07-2019
  •  | 
  •  

Frage

Sie AssignProcessToJobObject und es scheitert mit „Zugriff verweigert“, aber nur, wenn Sie in dem Debugger ausgeführt wird. Warum ist das?

War es hilfreich?

Lösung

Dies verwirrte mich für etwa 30 Minuten.

Zunächst einmal, Sie müssen wahrscheinlich ein UAC manifestiert sich in Ihrer Anwendung eingebettet ( wie hier vorgeschlagen ). So etwas wie folgt aus:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <!-- Identify the application security requirements. -->
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
      <security>
        <requestedPrivileges>
          <requestedExecutionLevel
            level="asInvoker"
            uiAccess="false"/>
        </requestedPrivileges>
      </security>
    </trustInfo>
  </assembly>

Zweitens (und das ist das Bit ich steckengeblieben), wenn Sie Ihre Anwendung unter dem Debugger ausgeführt wird, erstellt es Ihren Prozess in einem Job-Objekt. Was Ihr Kind Prozess zum abtrünnigen muss in der Lage sein, bevor Sie es zu Ihrem Job zuweisen können. So (duh), müssen Sie CREATE_BREAKAWAY_FROM_JOB in den Flaggen für CreateProcess angeben).

Wenn Sie wurden nicht unter dem Debugger ausgeführt wird, oder Ihre Eltern-Prozess in den Job wäre, wäre das nicht passiert.

Andere Tipps

Das scheint mir ziemlich oft zu beißen, und während gut, 1800INFORMATION der Post scheint nicht eine Reihe von Gründen und Fehlerbehebungen enthalten, die nützlich erscheinen, so scheint es sinnvoll, eine Zusammenfassung zu schreiben, warum ich gesehen habe, dies geschieht.

  1. Beim Versuch, diese für sich selbst zu lösen, beachten Sie als dieses Problem kann aus verschiedenen Gründen auftreten, wenn von cmd.exe, Explorer ausgeführt wird, und Visual Studio. Der Versuch, die fehlerhafte ausführbare Datei von der laufen entsprechende Stellen können die Ursache des Problems zu identifizieren. Sie App kann nur Arbeit von CMD.EXE trotz finden von V. S. versagt und Explorer.exe
  2. In meinem Fall unter Win7, ich schien zu müssen un-Kommentar die „SupportedOS“ Anzeigeelement Win7 Kompatibilität vom app.manifest Datei. Dies scheint das Problem zu beheben, wenn sie von Explorer ausgeführt wird. Zu fügen Sie ein Manifest der rechten Maustaste auf das Projekt, Hit hinzufügen und finden 'Application Manifest Datei'.
  3. Visual Studio 2010 zum Laufen zu bringen, schien ich es aus mit den Programmkompatibilitäts-Assistenten stoppen zu müssen, Tom Minka teilt zwei Möglichkeiten, dies zu tun hier: https://stackoverflow.com/a/4232259/86375 , Notiz, ich hatte VS2010 neu zu starten seine Änderungswünsche zu nehmen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top