My.User.IsInRole возвращает false

Я пытался перенести приложение 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: мы не должны вносить много изменений в код. Ниже приведены проблемы.

VS 2008 Возвращение True введите здесь описание изображения

VS 2017 Возвращение False введите описание изображения здесь

также я пробовал с приведенным ниже кодом (где он также работает неправильно)

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. но я не уверен, является ли это ошибкой или мой подход неверен......


person Sanath Pabba    schedule 26.03.2018    source источник
comment
Этот вопрос почти ничего не добавляет к вашему предыдущему.   -  person A Friend    schedule 26.03.2018


Ответы (2)


Попробуйте вызвать My.User.InitializeWithWindowsUser() при запуске приложения.

person Ondřej    schedule 26.03.2018

  • Проверить, существует ли роль

Немного информации из MSDN:

Точное поведение объекта My.User зависит от типа приложения и операционной системы, в которой работает приложение. Дополнительные сведения см. в обзоре класса User.

Также My.User.IsInRole доступен только для Windows Forms.

person kabinx    schedule 26.03.2018