Question Comment forcer mon application .NET à s'exécuter en tant qu'administrateur?


Une fois mon programme installé sur un ordinateur client, comment forcer mon programme à fonctionner en tant qu'administrateur sous Windows 7?


718
2018-05-12 11:09


origine


Réponses:


Vous voudrez modifier le manifeste incorporé dans le programme. Cela fonctionne sur Visual Studio 2008 et supérieur: Projet + Ajouter un nouvel élément, sélectionnez "Fichier manifeste de l'application". Changer la <requestedExecutionLevel> élément à:

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

L'utilisateur obtient le UAC invite quand ils commencent le programme. Utiliser judicieusement; leur patience peut s'user rapidement.


955
2018-05-12 12:35



Ajouter un requestedExecutionLevel élément à votre manifeste est seulement la moitié de la bataille; tu dois te rappeler que UAC peut être désactivé. Si c'est le cas, vous devez effectuer la vérification de l'ancienne façon et mettre en place une boîte de dialogue d'erreur si l'utilisateur n'est pas administrateur
 (appel IsInRole(WindowsBuiltInRole.Administrator) sur votre fil CurrentPrincipal).


133
2018-05-13 01:14



J'ai implémenté du code pour le faire manuellement:

using System.Security.Principal;
public bool IsUserAdministrator()
{
    bool isAdmin;
    try
    {
        WindowsIdentity user = WindowsIdentity.GetCurrent();
        WindowsPrincipal principal = new WindowsPrincipal(user);
        isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
    }
    catch (UnauthorizedAccessException ex)
    {
        isAdmin = false;
    }
    catch (Exception ex)
    {
        isAdmin = false;
    }
    return isAdmin;
}

46
2017-08-30 05:43



Vous pouvez incorporer un fichier manifeste dans le fichier EXE, ce qui fera que Windows (7 ou plus) exécutera toujours le programme en tant qu'administrateur.

Vous pouvez trouver plus de détails dans Étape 6: Créer et incorporer un manifeste d'application (UAC) (MSDN).


39
2018-05-12 11:29



Les étapes détaillées sont les suivantes.

  1. Ajouter un fichier manifeste d'application à la solution
  2. Modifier le paramètre de l'application sur "app.manifest"
  3. Mettez à jour le tag "requestedExecutionLevel" pour requireAdministrator.

Adding file in Solution

Select Application Manifest File

Select Manifest option

Update Manifest file

Notez qu'en utilisant ce code vous devez désactiver les paramètres de sécurité de ClickOnce, pour ce faire, allez dans Propriétés -> Sécurité -> ClickOnce Security


33
2018-05-12 15:30



Lorsque vous travaillez sur Visual Studio 2008, faites un clic droit sur Project -> Add New Item et ensuite choisi Application Manifest File.

Dans le fichier manifeste, vous trouverez le tag requestedExecutionLevelet vous pouvez définir le niveau à trois valeurs:

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

OU

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

OU

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

Pour que votre application s'exécute en tant qu'administrateur, vous devez choisir celle du milieu.


14
2018-03-06 07:18



Dans Visual Studio 2010, cliquez avec le bouton droit sur le nom de votre projet. Hit "View Windows Settings", 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.


10
2017-09-07 15:19



Selon

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

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 au Application Cliquez sur l'onglet et vérifiez que votre projet n'exclut pas le manifeste au bas du robinet.

  • Ensuite, cliquez avec le bouton droit sur le projet
  • Ajoute un nouvel objet
  • Enfin, recherchez et cliquez sur Fichier manifeste de l'application

10
2018-03-17 13:06