Vb.net My.User.IsInRole返回false

Vb.net My.User.IsInRole返回false,vb.net,isinrole,Vb.net,Isinrole,我试图将vb.net应用程序从.net framework 2.0(Visual studio 2008)迁移到.net framework 4.7.0(Visual studio 2017)。这里的问题是,IsInRole方法可以很好地检查当前用户是否是VisualStudio2008中角色的一部分。但是,当我在Visual Studio 2015或2017中打开相同的代码时,其返回的False与结果一致。问题不仅在于最新的Visual Studio中的IsInRole,还在于它为My.Use

我试图将vb.net应用程序从.net framework 2.0(Visual studio 2008)迁移到.net framework 4.7.0(Visual studio 2017)。这里的问题是,
IsInRole
方法可以很好地检查当前用户是否是VisualStudio2008中角色的一部分。但是,当我在Visual Studio 2015或2017中打开相同的代码时,其返回的
False
与结果一致。问题不仅在于最新的Visual Studio中的
IsInRole
,还在于它为
My.User.Name
返回空值。有人能提出解决这个问题的办法吗。 PS:我们不应该做太多的代码更改。以下是问题

VS 2008返回
True

VS 2017返回
False

我还尝试了下面的代码(它也不能正常工作)


在一个MSDN门户网站上,一个人提到它对他不起作用,并告诉我向微软提出一个bug。但我不确定这是错误还是我的方法错了……

尝试在应用程序启动时调用
my.User.initializeWithWindowUser()

  • 检查角色是否存在
来自MSDN的一些信息:

My.User对象的确切行为取决于应用程序的类型和应用程序运行的操作系统。有关更多信息,请参阅用户类概述


此外,My.User.IsInRole仅适用于Windows窗体。

此问题对您以前的问题几乎没有任何补充。
Imports System.Security.Principal

Class PrincipalCheck
    Shared Function UserInRole(role As String) As Boolean
        Dim currPrincipal As New WindowsPrincipal(New WindowsIdentity(Environment.UserName))
        Return currPrincipal.IsInRole(role)
    End Function
End Class

Public Sub StartCheck()
    MsgBox(PrincipalCheck.UserInRole("MyDomain\MyGroup"))
End Sub