Модератор: Ramzes
'***********************************************
Public LOGON32_LOGON_INTERACTIVE As Integer = 2
Public LOGON32_PROVIDER_DEFAULT As Integer = 0
Dim impersonationContext As System.Security.Principal.WindowsImpersonationContext
Public Declare Auto Function LogonUser Lib "advapi32.dll" (ByVal lpszUsername As String, _
ByVal lpszDomain As String, _
ByVal lpszPassword As String, _
ByVal dwLogonType As Integer, _
ByVal dwLogonProvider As Integer, _
ByRef phToken As IntPtr) As Integer
Public Declare Auto Function DuplicateToken Lib "advapi32.dll" _
(ByVal ExistingTokenHandle As IntPtr, _
ByVal ImpersonationLevel As Integer, _
ByRef DuplicateTokenHandle As IntPtr) As Integer
' Login User s Administrative rights
If impersonateValidUser("USER", "", "PWD") Then
undoImpersonation()
end if
'*************************************************
Public Function impersonateValidUser(ByVal userName As String, _
ByVal domain As String, ByVal password As String) As Boolean
Dim tempWindowsIdentity As System.Security.Principal.WindowsIdentity
Dim token As IntPtr
Dim tokenDuplicate As IntPtr
If LogonUser(userName, domain, password, LOGON32_LOGON_INTERACTIVE, _
LOGON32_PROVIDER_DEFAULT, token) <> 0 Then
If DuplicateToken(token, 2, tokenDuplicate) <> 0 Then
tempWindowsIdentity = New System.Security.Principal.WindowsIdentity(tokenDuplicate)
impersonationContext = tempWindowsIdentity.Impersonate()
If impersonationContext Is Nothing Then
impersonateValidUser = False
Else
impersonateValidUser = True
End If
Else
impersonateValidUser = False
End If
Else
impersonateValidUser = False
End If
End Function
Public Sub undoImpersonation()
impersonationContext.Undo()
End Sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33