Я пытался перенести приложение vb.net с .net framework 2.0 (Visual studio 2008) на .net framework 4.7.0 (Visual studio 2017). Здесь проблема в том, что метод IsInRole
работает нормально, чтобы проверить, является ли текущий пользователь частью ролей в Visual Studio 2008. Но когда я открываю тот же код в Visual Studio 2015 или 2017, он возвращает False
в качестве результата. Проблема не только с IsInRole
, но и с возвратом null для My.User.Name
в последней версии Visual Studio. Может кто-нибудь подскажет, как решить проблему. 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 один человек упомянул, что у него это тоже не работает, и сказал мне сообщить об ошибке в Microsoft. но я не уверен, является ли это ошибкой или мой подход неверен......