Une fois mon programme installé sur une machine cliente, comment puis-je forcer mon programme à s'exécuter en tant qu'administrateur sur Windows 7?
876
Une fois mon programme installé sur une machine cliente, comment puis-je forcer mon programme à s'exécuter en tant qu'administrateur sur Windows 7?
Réponses:
Vous voudrez modifier le manifeste qui est incorporé dans le programme. Cela fonctionne sur Visual Studio 2008 et supérieur: Projet + Ajouter un nouvel élément, sélectionnez "Fichier manifeste d'application". Remplacez l'
<requestedExecutionLevel>
élément par:L'utilisateur reçoit l' invite UAC lorsqu'il démarre le programme. Utilisez judicieusement; leur patience peut s'user rapidement.
la source
L'ajout d'un
requestedExecutionLevel
élément à votre manifeste ne représente que la moitié de la bataille; vous devez vous rappeler que l' UAC peut être désactivé. Si c'est le cas, vous devez effectuer la vérification à l'ancienne et mettre en place une boîte de dialogue d'erreur si l'utilisateur n'est pas administrateur(
IsInRole(WindowsBuiltInRole.Administrator)
faites appel à votre threadCurrentPrincipal
).la source
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
égalementIsInRole
, Anders en parle.Les étapes détaillées sont les suivantes.
Notez que l'utilisation de ce code vous devez désactiver les paramètres de sécurité de ClickOnce, pour ce faire, allez dans Propriétés -> Sécurité -> Sécurité ClickOnce
la source
New Item...
n'est pas une option sur mon projet de service d'installation. Comment pourrais-je ajouter le manifeste de l'application? Je peux l'ajouter à mon projet principal mais pas à son installateur.J'ai implémenté du code pour le faire manuellement:
la source
Vous pouvez incorporer un fichier manifeste dans le fichier EXE, ce qui obligera Windows (7 ou supérieur) à toujours exécuter le programme en tant qu'administrateur.
Vous pouvez trouver plus de détails à l' étape 6: créer et incorporer un manifeste d'application (UAC) (MSDN).
la source
Tout en travaillant sur Visual Studio 2008, faites un clic droit sur
Project -> Add New Item
puis choisissezApplication Manifest File
.Dans le fichier manifeste, vous trouverez la balise
requestedExecutionLevel
et vous pouvez définir le niveau sur trois valeurs:<requestedExecutionLevel level="asInvoker" uiAccess="false" />
OU
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
OU
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Pour configurer votre application pour qu'elle s'exécute en tant qu'administrateur, vous devez choisir celle du milieu.
la source
Selon
vous voudrez ajouter un manifeste d'application si vous n'en avez pas déjà un ou si vous ne savez pas comment en ajouter un. Comme certains projets n'ajoutent pas automatiquement un fichier manifeste distinct, accédez d'abord aux propriétés du projet, accédez à l' onglet Application et vérifiez que votre projet n'exclut pas le manifeste au bas du robinet.
la source
Dans Visual Studio 2010, cliquez avec le bouton droit sur le nom de votre projet. Appuyez sur "Afficher les paramètres Windows", cela génère et ouvre un fichier appelé "app.manifest". Dans ce fichier, remplacez "asInvoker" par "requireAdministrator" comme expliqué dans les sections commentées du fichier.
la source
Une autre façon de le faire, en code uniquement, consiste à détecter si le processus s'exécute en tant qu'administrateur comme dans la réponse de @NG. . Et puis ouvrez à nouveau l'application et fermez celle en cours.
J'utilise ce code lorsqu'une application n'a besoin que de privilèges d'administrateur lorsqu'elle est exécutée dans certaines conditions, comme lors de l'installation elle-même en tant que service. Il n'a donc pas besoin d'être exécuté en tant qu'administrateur tout le temps comme les autres réponses le forcent également.
Remarque dans le code ci-dessous
NeedsToRunAsAdmin
est une méthode qui détecte si dans les conditions actuelles des privilèges d'administrateur sont requis. Si cela retourne,false
le code ne s'élèvera pas. C'est un avantage majeur de cette approche par rapport aux autres.Bien que ce code présente les avantages mentionnés ci-dessus, il a besoin de se relancer en tant que nouveau processus qui n'est pas toujours ce que vous voulez.
la source
runas
tant qu'administrateur à partir d'un utilisateur non administrateur, sinon il s'ouvrira silencieusement avec les autorisations utilisateur actuelles (vérifié sur Windows 7 64 bits). Pour autant que je sache, la seule chose que vous pouvez faire avec l'UAC désactivé et le droit d'administrateur manquant est d'arrêter l'exécution au bon moment.Vous pouvez créer le manifeste à l'aide des paramètres de sécurité ClickOnce, puis le désactiver:
Après avoir cliqué dessus, un fichier sera créé sous le dossier des propriétés du projet appelé app.manifest une fois celui-ci créé, vous pouvez décocher l'
Enable ClickOnce Security Settings
optionOuvrez ce fichier et changez cette ligne:
à:
Cela rendra le programme nécessitera des privilèges d'administrateur.
la source
Ceci est une version simplifiée de cette réponse , ci-dessus par @NG
la source
Cliquez avec le bouton droit sur votre exécutable, accédez à Propriétés> Compatibilité et cochez la case «Exécuter ce programme en tant qu'administrateur».
Si vous souhaitez l'exécuter en tant qu'administrateur pour tous les utilisateurs, faites la même chose dans «Modifier les paramètres pour tous les utilisateurs».
la source