Question

Mon programme d'installation déploie une configuration exe qui est utilisé pour faire une configuration de base sur un service Windows qui est également installé. L'exe a également besoin de créer et d'écrire des clés de registre. Sur un serveur Windows environnement 2008, ces clés ne peuvent pas être créés. Je l'ai étudié et constaté que c'est un privilège Administrateur et l'exe n'est pas incité pour les autorisations d'administrateur qui sont nécessaires sous contrôle de compte par rapport à 2008. Je peux contourner ce problème en cliquant droit sur l'exe et en cours d'exécution en tant qu'administrateur. Ce n'est pas idéal mais comme une étape supplémentaire que je dois informer nos clients d'effectuer. Y a-t-il d'autres façons d'élever les droits d'administrateur lors de l'exécution du exe?

Était-ce utile?

La solution

Mettre un manifeste ou avec l'exe. Je peux vous dire comment intégrer le manifeste en utilisant Visual Studio si vous me le faire savoir quelle version de ce que vous utilisez. Si vous ne l'utilisez Visual Studio, ou vous ne construisez pas l'exe, alors vous pouvez simplement mettre le fichier manifeste dans le même dossier que l'exécutable et qui fonctionnera aussi. Dans ce cas, le fichier doit être le même nom que votre exe, avec .manifest à la fin, par exemple pour foo.exe il de foo.exe.manifest. Le contenu devrait ressembler à ceci:

<?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>

Notez les valeurs possibles pour requestedExecutionLevel sont tous ici dans un commentaire, et celle-ci utilise requireAdministrator. Maintenant, il va toujours élever et donc le travail pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top