Междоменная копия файла с использованием VB.NET - PullRequest
0 голосов
/ 12 марта 2011

У меня есть файл, который автоматически генерируется на сервере в домене Windows, скажем, называется «prod», и мне понадобится VB.NET для передачи этого файла на другой сервер в другом домене Windows, скажем,«QA», где QA и Prod имеют разные учетные данные, и я должен проверять эти учетные данные каждый раз, когда открываю папку назначения.

Поэтому я полагаю, что обычный метод копирования файлов не будет работать, есть ли другой способгде мы можем это сделать?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 12 марта 2011

Как насчет этого

<DllImport("advapi32.dll")> _
Public Shared Function LogonUser(lpszUsername As String, lpszDomain As String, lpszPassword As String, dwLogonType As Integer, dwLogonProvider As Integer, phToken As IntPtr) As Boolean
End Function
<DllImport("kernel32.dll")> _
Public Shared Function CloseHandle(hObject As IntPtr) As Boolean
End Function

Public Shared Function OpenFileWithAccount(filename As String, username As String, domain As String, password As String) As Stream
    Dim token As IntPtr
    If Not LogonUser(username, domain, password, 2, 0, token) Then
        Throw New Win32Exception()
    End If
    Try
        Using WindowsIdentity.Impersonate(token)
            Return File.OpenRead(filename)
        End Using
    Finally
        CloseHandle(token)
    End Try
End Function

и звоните

Dim stream as Stream
stream = OpenFileWithAccount("filePath","userName","prod","password")
0 голосов
/ 29 июля 2011

токен = Маршал. РаспределениеHGlobal (8)

...