gpt4 book ai didi

c# - LogonUser 调用 - 用户是否需要该机器的登录权限?

转载 作者:太空宇宙 更新时间:2023-11-03 16:14:31 25 4
gpt4 key购买 nike

我很难找到有关此方法的大量信息,所以我想我应该在这里问问,看看你们这些优秀的人是否可以提供帮助。

我们基本上拥有的是......

[DllImport("advapi32.dll", SetLastError = true)]
private static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, out IntPtr phToken);

if (LogonUser(AdminDevUser,
AdminDevDomain,
AdminDevPassword,
8, // LOGON32_LOGON_NETWORK_CLEARTEXT
0, // LOGON32_PROVIDER_DEFAULT
out token))
{
wi = new WindowsIdentity(token);
WindowsImpersonationContext wic = wi.Impersonate();
blnFileExists = File.Exists(strFileName);
wic.Undo();
CloseHandle(token);
return blnFileExists;
}
else
{
throw new Exception(Marshal.GetLastWin32Error().ToString());
//Console.WriteLine("LogonUser() failed with error code " + Marshal.GetLastWin32Error());
}

写这篇文章的人已经不在了,所以我想弄清楚完成这项工作需要什么。我的假设是 logonUser 方法只是模拟从该 Web 服务器登录到网络的给定登录信息......然后在 Impersonate 之后完成的任何后续调用都将完成,就好像该用户正在执行它们而不是登录到 Web 的任何人服务器。正确吗?

我们从 throw 行中得到一个错误,如下所示:

87 Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Exception: 87

最佳答案

简短回答:您是对的,您需要 WRM/WSM 在远程计算机上执行与上述代码相同的操作。

有关您在上面尝试使用的 API 的更多详细信息:http://msdn.microsoft.com/en-us/library/windows/desktop/aa378184%28v=vs.85%29.aspx

“...您不能使用 LogonUser 登录到远程计算机...”和“如果 (...) 成功,您将收到代表登录用户的 token 句柄。然后您可以使用此 token 句柄来模拟 (...)”


要测试远程系统上的文件是否存在(也许稍后读取它?),我建议共享该文件或它包含的文件夹,或使用服务器-客户端连接(例如套接字)。

解决问题的复杂方法是​​使用 Windows 远程管理。你可以在这里找到一个很好的起点: http://msdn.microsoft.com/en-us/library/windows/desktop/aa384423%28v=vs.85%29.aspx

希望这对您有所帮助!

关于c# - LogonUser 调用 - 用户是否需要该机器的登录权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16104602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com