2017-04-19 1 views
0

J'ai fait une demande et certaines de ses caractéristiques travailler uniquement avec des droits d'administrateur,Comment vérifier si l'application fonctionne en tant qu'administrateur VB.NET

Comment puis-je vérifier si l'application fonctionne avec des droits d'administrateur ou non?

  • Et d'afficher une boîte de message si l'application ne s'exécute pas avec des droits d'administrateur pour s'exécuter en tant qu'administrateur.

Répondre

4

il suffit de changer le app.manifest pour forcer l'administration exiger:

Solution Explorer -> Mon projet -> Afficher les paramètres de Windows

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

3
Imports System.Security.Principal 


Dim identity = WindowsIdentity.GetCurrent() 
Dim principal = new WindowsPrincipal(identity) 
Dim isElevated as Boolean = principal.IsInRole(WindowsBuiltInRole.Administrator) Then 
MessageBox.Show("Is Admin") 

En VB .Net il y a même un raccourci pour cela: If My.User.IsInRole(ApplicationServices.BuiltInRole.Administrat‌​or) Then ... -

0

Vous pouvez essayer de créer un fichier sur le lecteur système dans un bloc try/catch, et s'il attrape une exception d'accès refusé, cela signifie que l'application n'est pas exécutée en tant qu'administrateur.

Imports System.IO 
Public Class Form1 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     Try 
      File.Create("c://test.txt") 
      MessageBox.Show("Is Admin") 
      File.Delete("c://test.txt") 
     Catch ex As Exception 
      If ex.ToString.Contains("denied") Then 
       MessageBox.Show("Is Not Admin") 
      End If 
     End Try 
    End Sub 
End Class 
0

Une version pour C# 6 (ou version ultérieure), adapté de la solution Visual Basic posté ailleurs sur cette page. Dans l'intérêt universel utiliser , ici, je conçois un bool -Évaluées propriété statique :

(using System.Security.Principal;)

public static bool IsAdministrator => 
    new WindowsPrincipal(WindowsIdentity.GetCurrent()) 
      .IsInRole(WindowsBuiltInRole.Administrator); 


Maintenant, après avoir montré cela, il faut reconnaître que @ L'approche de Mederic semble en effet supérieure, car on ne sait pas exactement ce qu'une application peut utilement faire après avoir probablement détecté - et signalé - qu'une telle condition (probablement) critique a échoué. Il est sûrement plus sage - et plus sûr - de déléguer des préoccupations de cette nature à l'OS.



C'est, éludant la "MessageBox" desiderata articulés par l'OP.