我试图将.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:我们不应该做很多代码更改。以下是问题。
我也尝试过以下代码(它也无法正常工作)
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门户网站上,有人提到它不适合他,并告诉我向微软提出一个错误。但我不确定它是一个错误还是我的做法是错误的......
答案 0 :(得分:0)
尝试在应用程序启动时调用My.User.InitializeWithWindowsUser()
。
答案 1 :(得分:0)
来自MSDN的一些信息:
My.User对象的确切行为取决于应用程序的类型以及运行应用程序的操作系统。有关更多信息,请参阅用户类概述。
此外,My.User.IsInRole仅适用于Windows窗体。