gpt4 book ai didi

c# - 混合 C# 和 VB.NET 项目中的 UAC

转载 作者:行者123 更新时间:2023-11-30 22:29:36 25 4
gpt4 key购买 nike

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

此 VB.NET 程序集需要管理权限。

我在我的 C# 项目中创建了一个 list :

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

最佳答案

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

For Windows applications, only projects built on the Windows Application template initialize the My.User object by default. In all other Windows project types, you must initialize the My.User object by calling the My.User.InitializeWithWindowsUser Method explicitly or by assigning a value to CurrentPrincipal.

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

关于c# - 混合 C# 和 VB.NET 项目中的 UAC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10156689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com