Domanda

Il mio programma di installazione distribuisce un exe di configurazione che viene utilizzato per fare qualche configurazione di base su un servizio di Windows che è installato anche. L'exe ha anche bisogno di creare e scrivere alcune chiavi di registro. Su un server di Windows 2008 ambiente non possono essere creati questi tasti. Ho indagato e scoperto che si tratta di un privilegio di amministratore, e l'exe non sta spingendo per le autorizzazioni di amministratore che sono necessari sotto il controllo dell'account utente al 2008. posso lavorare intorno a questo facendo clic destro l'exe e l'esecuzione come amministratore. Questo non è l'ideale ma come un passo in più ho bisogno di informare i nostri clienti di eseguire. Ci sono altri modi di elevare le autorizzazioni di amministratore quando si esegue l'exe?

È stato utile?

Soluzione

Mettere un manifesto o con l'exe. Posso dirvi come incorporare il manifesto utilizzando Visual Studio, se me lo faccia sapere quale versione di che si sta utilizzando. Se non stai utilizzando Visual Studio, o non costruire l'exe, allora si può semplicemente mettere il file manifesto nella stessa cartella del file exe e che funzionerà anche. In tal caso, il file deve essere nominato lo stesso del vostro exe, con manifest alla fine, ad esempio per foo.exe essa la foo.exe.manifest. Il contenuto dovrebbe essere simile a questo:

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

Avviso i valori possibili per requestedExecutionLevel sono tutti qui in un commento, e questo usa requireAdministrator. Ora sarà sempre elevare e quindi lavoro per voi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top