2017-04-19 108 views
0

我做了一個應用程序,它的一些功能只能用管理員權限工作,如何檢查是否應用程序作爲管理員VB.NET

我如何檢查,如果應用程序是用管理員權限或沒有運行?

  • 並顯示一個消息框,如果應用程序沒有運行管理員權限以管理員身份運行。

回答

4

只要改變app.manifest強制要求管理:

解決方案管理器 - >我的項目 - >查看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") 

在VB中.Net甚至有一個這樣的捷徑:If My.User.IsInRole(ApplicationServices.BuiltInRole.Administrat‌​or) Then ... -

0

您可以嘗試在try/catch塊內的系統驅動器上創建一個文件,如果它捕獲到拒絕訪問異常,則表示該應用程序未以管理員身份運行。

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

一個版本爲C#6(或更高版本),改編自的Visual Basic溶液當前頁上的其他地方張貼。在通用的利益使用,在這裏我想到一個bool -valued靜態屬性

using System.Security.Principal;

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


現在已經顯示這一點,我們必須承認, @ Mederic的方法確實看起來更加優秀,因爲它可能不清楚應用程序在可能檢測到並報告之後可能有用的功能,因爲這樣(可能)關鍵的先決條件失敗了。當然,將這種性質的擔憂委託給操作系統更明智也更安全。



即,eliding由OP闡述的 「MessageBox」 必要條件。

相關問題