无法找到名为“LogonUser”的入口点在DLL“advapi32.dll”中冒充异常
在执行一些遗留模拟逻辑时,我遇到以下异常:
无法在 DLL 'advapi32.dll' 中找到名为 'LogonUser' 的入口点
我知道该错误意味着我的应用程序无法在 DLL 中找到 LogonUser 方法advapi32.dll。
代码看起来像这样:
[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
private static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
if(LogonUser(_username, _domainname, _password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref _tokenHandle))
{
//do stuff...
}
有没有人遇到过类似的错误 - 有关如何修复它或为什么会发生的任何建议?除了使用 advapi32.dll (它是 .net 3.5 解决方案,但有很多遗留类)之外,还有更好的方法吗?
I'm getting the following exception when going through some legacy impersonation logic:
Unable to find an entry point named 'LogonUser' in DLL 'advapi32.dll'
I understand that the error means that my app can't find the LogonUser method in the advapi32.dll.
The code looks something like this:
[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
private static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
if(LogonUser(_username, _domainname, _password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref _tokenHandle))
{
//do stuff...
}
Has anyone had a similar error - any suggestions on how to fix it or why it is happening? Is there a better way to do this besides using the advapi32.dll (its a .net 3.5 solution but there are lots of legacy classes)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
也许它与“ExactSpelling = true”有关
这似乎有效:
Maybe it has something to do with the "ExactSpelling = true"
This seems to work:
您是否尝试过使用 pinvoke.net 上提供的 LogonUser 签名版本?
Have you tried using the version of LogonUser's signature provided on pinvoke.net?