あなたが使用しなければならない正確なアクセス権。それを得るには、LogonUserメソッドを呼び出す必要があります:
私はちょうどここにVB.netコードを持っていることに気づいていません。 C#で、それを想像し、ここc#
外部メソッド宣言で) :
Private 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 Boolean
と実行:
_Token = New IntPtr(0)
Const LOGON32_PROVIDER_DEFAULT As Integer = 0
'This parameter causes LogonUser to create a primary token.
Const LOGON32_LOGON_INTERACTIVE As Integer = 2
Const LOGON32_LOGON_NEWCREDENTIALS As Integer = 9
_Token = IntPtr.Zero
' Call LogonUser to obtain a handle to an access token.
Dim returnValue As Boolean = LogonUser(_User, _Domain, _Password, LOGON32_LOGON_NEWCREDENTIALS, LOGON32_PROVIDER_DEFAULT, _Token)
If False = returnValue Then
Dim ret As Integer = Marshal.GetLastWin32Error()
Console.WriteLine("LogonUser failed with error code : {0}", ret)
Throw New System.ComponentModel.Win32Exception(ret)
End If
_Identity = New WindowsIdentity(_Token)
_Context = _Identity.Impersonate()
がパスワードなしでそうする方法はあるのAdvapi32.dllから
LogonUser
を呼び出す/ Pを使用しますか?私は偽装の直前に作成しているので、私はそれにアクセスできます。 – Doug私は 'CloseHandle'(' LogonUser'のための[docs](https://msdn.microsoft.com/en-us/library/windows/desktop/aa378184(v = vs.85)に記載) .aspx))を使用ブロックの後の 'userToken'に置き換えます。または、これはWindowsIdentityによって何らかの形で呼び出されていますか? – CodeFox
こんにちは、これはASP.NETアプリケーションの場合は、どのような範囲ですか? すべてのページでこの関数を呼び出す必要がありますか? –