授权其他用户访问本台计算机,模拟另一台计算机上的本地用户

我需要将控制器登录到另一台计算机并在其上复制文件;我必须在远程计算机上使用本地用户。

目前,我正在使用以下代码:

private Impersonate(bool active, string domain, string username, string password, LogonType logonType)

{

if (active)

{

IntPtr handle;

var ok = NativeMethods.LogonUser(username, domain, password, (int)logonType, 0, out handle);

if (!ok)

{

var errorCode = Marshal.GetLastWin32Error();

throw new ApplicationException(string.Format("Could not impersonate the elevated user. LogonUser returned error code {0}.", errorCode));

}

_handle = new SafeTokenHandle(handle);

_context = WindowsIdentity.Impersonate(_handle.DangerousGetHandle());

}

}

通过这些参数:

using (Impersonate.LogonUser(true,

".",

"todev1.domain.com\admin",

"Test123_",

LogonType.Interactive))

{

}

和这个胜利的API:

[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]

internal static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, out IntPtr phToken);

我试图将多个值作为域,用户等传递给该方法,但找不到正确的解决方案。我尝试使用NewCredentials,但即使未登录,它也总是返回OK。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值