My.User.IsInRole返回false

时间:2018-03-26 07:47:18

标签: vb.net isinrole

我试图将.net framework 2.0(Visual Studio 2008)中的vb.net应用程序迁移到.net framework 4.7.0(Visual Studio 2017)。这里的问题是,IsInRole方法正常工作以检查当前用户是否是Visual Studio 2008中角色的一部分。但是当我在Visual Studio 2015或2017中打开相同的代码时,它返回False出来了。问题不仅在于IsInRole,还在最新的Visual Studio中为My.User.Name返回null。有人可以建议解决问题的方法是什么。 PS:我们不应该做很多代码更改。以下是问题。

VS 2008 返回True enter image description here

VS 2017 返回False enter image description here

我也尝试过以下代码(它也无法正常工作)

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

并且在一个MSDN门户网站上,有人提到它不适合他,并告诉我向微软提出一个错误。但我不确定它是一个错误还是我的做法是错误的......

2 个答案:

答案 0 :(得分:0)

尝试在应用程序启动时调用My.User.InitializeWithWindowsUser()

答案 1 :(得分:0)

  • 检查角色是否存在

来自MSDN的一些信息:

  

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

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

相关问题