【问题标题】:UAC in mixed C# and VB.NET projects混合 C# 和 VB.NET 项目中的 UAC
【发布时间】:2012-04-14 19:32:27
【问题描述】:

我有一个 C# 项目,它引用了一个从 VB.NET 项目构建的 .NET 程序集。

此 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 项目并以管理员权限运行它,一切正常。

【问题讨论】:

    标签: c# .net vb.net


    【解决方案1】:

    My.User 的 MSDN 文章中有一条注释可能很重要:

    对于 Windows 应用程序,只有在 Windows 应用程序模板上构建的项目才会默认初始化 My.User 对象。在所有其他 Windows 项目类型中,您必须通过显式调用 My.User.InitializeWithWindowsUser 方法或将值分配给 CurrentPrincipal 来初始化 My.User 对象。

    不要犹豫,跳过 My.User 并改用 C# 方法。

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 1970-01-01
      • 2017-12-13
      • 2014-02-04
      • 2014-10-05
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多