2012-04-14 5 views
2

VB.NETプロジェクトからビルドされた.NETアセンブリを参照するC#プロジェクトがあります。混在したC#とVB.NETプロジェクトのUAC

このVB.NETアセンブリには管理者権限が必要です。

私はと私のC#プロジェクトでマニフェストを作成しました:

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

、すべてが良いようだ:私は実行すると:

bool isAdmin = new WindowsPrincipal(WindowsIdentity.GetCurrent()) 
    .IsInRole(WindowsBuiltInRole.Administrator) ? true : false; 

私のC#コードから予想通り、私はisAdmin == Trueを取得し、 VB.NET DLLからメソッドを呼び出すと、

My.User.IsInRole(Microsoft.VisualBasic.ApplicationServices.BuiltInRole.Administrator) 

私は代わりにFalseを取得します。

これは私にとって非常に非合理的です。

さらに、このVB.NETアセンブリへの参照を含むVB.NETプロジェクトを作成し、管理者権限で実行すると、すべて正常に動作します。

答えて

3

注意が重要となる可能性My.UserのためのMSDNの記事にあります:Windowsアプリケーションの

、唯一のWindowsアプリケーションテンプレート上に構築されたプロジェクトは、デフォルトではMy.Userオブジェクトを初期化します。他のすべてのWindowsプロジェクトタイプでは、My.User.InitializeWithWindowsUserメソッドを明示的に呼び出すか、CurrentPrincipalに値を割り当てることで、My.Userオブジェクトを初期化する必要があります。

My.Userをスキップして、代わりにC#の方法を使用してください。

+0

こちら、ありがとうございます! – max333

関連する問題