Frage

Mein Installer bereitstellt ein Konfigurations -Exe, mit dem auch eine grundlegende Konfiguration in einem Windows -Dienst durchgeführt wird, der ebenfalls installiert ist. Die Exe muss auch einige Registrierungsschlüssel erstellen und schreiben. In einer Windows Server 2008 -Umgebung können diese Schlüssel nicht erstellt werden. Ich habe untersucht und festgestellt, dass dies ein Administrator -Privileg ist, und die EXE ist nicht auf Administratorberechtigungen aufgefordert, die unter UAC am 2008 benötigt werden. Dies ist jedoch nicht ideal, da es ein zusätzlicher Schritt ist, dass ich unsere Kunden über die Ausführung informieren muss. Gibt es andere Möglichkeiten, die Administratorberechtigungen beim Ausführen der Exe zu erhöhen?

War es hilfreich?

Lösung

Setzen Sie ein Manifest auf oder mit dem exe. Ich kann Ihnen sagen, wie Sie das Manifest mit Visual Studio einbetten können, wenn Sie mir wissen lassen, welche Version Sie verwenden. Wenn Sie Visual Studio nicht verwenden oder das EXE nicht erstellen, können Sie die Manifestdatei einfach in denselben Ordner wie das EXE einfügen und das funktioniert auch. In diesem Fall muss die Datei gleich genannt werden wie Ihr Exe, mit .Manifest am Ende, z. B. für foo.exe it is foo.exe.manifest. Der Inhalt sollte so aussehen:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <!-- UAC Manifest Options
            If you want to change the Windows User Account Control level replace the 
            requestedExecutionLevel node with one of the following.

        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

            If you want to utilize File and Registry Virtualization for backward 
            compatibility then delete the requestedExecutionLevel node.
        -->
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</asmv1:assembly>

Beachten Sie, dass die möglichen Werte für angeforderte execisionlevel hier in einem Kommentar sind, und dieser verwendet den Anforderungsministrator. Jetzt wird es immer erhöht und daher für Sie funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top