0

ドメイン環境と非ドメイン (ローカル デスクトップ) 環境の両方で実行される Windows フォーム アプリケーションがあります。これらのさまざまな環境で Windows セキュリティがどのように機能するかを理解しようとしています。アプリケーションを管理者として実行しているWindowsユーザーが、ドメイン環境とローカル環境で異なると想定している場合(そしておそらくUACが制御されている場合は??)をプログラムで特定する必要があります。

また、UAC がオンになっている場合にドメイン ログインに取って代わるかどうかについても少し混乱していますか?

製品のほとんどのリモート ユーザーもローカル管理者として設定され、UAC によって制限されると思います。

これらの条件下で特権を確認するにはどうすればよいですか? (vb.net アプリですが、C# も問題ありません - ありがとうございます)

乾杯、ティム。

4

2 に答える 2

1
Public Function isWindowsAdministrator() As Boolean
    My.User.InitializeWithWindowsUser()
    If My.User.IsAuthenticated Then
        If My.User.IsInRole(Microsoft.VisualBasic.ApplicationServices.BuiltInRole.Administrator) Then
            Return True
        End If
    End If
    Return False
End Function

おそらく非VB/「純粋な」NETの代替手段がありますが、同等のものはわかりません。ユーザーが管理者に昇格できるかどうかをテストする方法もありますが、これは PInvoke であり、面倒な win32 の問題であり、実際には昇格せず、テストするだけです。

UAC は引き続きポップアップします。上記は、ユーザーが承認できるかどうかを事前に知らせるだけです。

于 2013-10-02T12:30:03.300 に答える
0

Vb.Net:

Public Function IsUserAnAdmin() As Boolean End Function

C#:

[DllImport("shell32.dll")] public static extern bool IsUserAnAdmin();

ご覧のとおり、IsUserAnAdmin を呼び出すとブール値が返されます (明らかにエイリアスを使用できます)。明確にするために、これは私が言及したすべてのシナリオで機能すると信じていますが、ドメインのテストを完全には完了していません....まだ

于 2013-10-03T09:18:58.780 に答える