我做了一個應用程序,它的一些功能只能用管理員權限工作,如何檢查是否應用程序作爲管理員VB.NET
我如何檢查,如果應用程序是用管理員權限或沒有運行?
- 並顯示一個消息框,如果應用程序沒有運行管理員權限以管理員身份運行。
我做了一個應用程序,它的一些功能只能用管理員權限工作,如何檢查是否應用程序作爲管理員VB.NET
我如何檢查,如果應用程序是用管理員權限或沒有運行?
只要改變app.manifest強制要求管理:
解決方案管理器 - >我的項目 - >查看Windows設置
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
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.Administrator) Then
... -
您可以嘗試在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
一個版本爲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
」 必要條件。