Помощь! Что не так с этим кодом? У меня есть приложение Windows Forms, где мне нужно защитить DLL с помощью безопасности на основе ролей; только кто-то в «MyRole» может делать вызовы этой сборке.
Я пробовал два разных способа установки текущего участника, но все, что я получаю, это «Запрос разрешения участника не выполнен».
Вот небольшое консольное приложение, демонстрирующее проблему. Заранее спасибо!
Imports System.Security
Module Module1
Sub Main()
Try
AppDomain.CurrentDomain.SetPrincipalPolicy(Principal.PrincipalPolicy.WindowsPrincipal)
'Dim oCurrPrincipal As New Principal.WindowsPrincipal(Principal.WindowsIdentity.GetCurrent())
'Threading.Thread.CurrentPrincipal = oCurrPrincipal
Dim oWriter As New Writer
oWriter.WriteLog("It seems so simple, why doesn't it work?")
Catch ex As Exception
Console.WriteLine(ex.ToString)
Finally
Console.ReadLine()
End Try
End Sub
End Module
Imports System.Security.Permissions
Imports System.Security
<PrincipalPermission(SecurityAction.Demand, Role:="MyRole")> _
Public Class Writer
Public Overloads Sub WriteLog(ByVal sMessage As String)
Console.WriteLine(sMessage)
End Sub
End Class