My.user.IsInRole总是返回false

时间:2018-03-15 11:01:18

标签: vb.net vb6-migration isinrole

目前,我正在处理一个迁移请求,我们需要将框架从3.5更改为4.6.2。这里的问题是在更改下面的框架之后,方法没有按预期显示结果。 in总是返回false。

My.User.IsInRole()

另外,我测试了以下代码:

If My.User.IsInRole(nlRole.InnerText) Then
   hasRole = True
   Exit For
End If

但没有运气。 有人可以帮助我解决上述问题。

如果您希望得到更多来自我的意见,请告诉我。

1 个答案:

答案 0 :(得分:0)

怀疑该问题可能与 Environment.UserName 的使用有关。尝试将其替换为 WindowsIdentity.GetCurrent(),因此:

Shared Function UserInRole(role As String) As Boolean
    Dim currPrincipal As New WindowsPrincipal(WindowsIdentity.GetCurrent())
    Return currPrincipal.IsInRole(role)
End Function

但是,值得记住的是,用户帐户控制可能会成为障碍。如果您没有运行提升,那么上述方法不适用于 WindowsBuiltInRole.Administrator,也可能是其他人。所以这也可能是一个问题。所以值得一看,当你跑高时是否得到不同的结果。