gpt4 book ai didi

c++ - 为什么 Windows 不允许在模拟另一个用户时启动 WinSock

转载 作者:可可西里 更新时间:2023-11-01 13:19:20 25 4
gpt4 key购买 nike

使用我自己的程序或其他程序,如果进程是使用 CreateProcessWithLogonW 或 CreateProcessAsUserW 创建的,我无法在调用时让 winsock 运行。它在我创建套接字时返回此错误:

WSAEPROVIDERFAILEDINIT 10106

Service provider failed to initialize.

The requested service provider could not be loaded or initialized.

This error is returned if either a service provider's DLL could not be loaded (LoadLibrary failed) or the provider's WSPStartup or NSPStartup function failed

.

但是,WSAStartup 似乎没有错误。只需使用 WSASocket 创建套接字即可返回此信息。

更新:

Errors:

LoadUserProfile: Error Code 2. Can't find file specified

AdjustTokenPrivs: Error Code 5. Access Denied

最佳答案

我遇到了完全相同的问题,这是由于环境 (!) 造成的:显然 WinSock 需要设置有效的 SystemRoot 环境变量。在我的例子中,我通过仅指定一个特定于我的应用程序的环境变量(没有继承调用者的环境)来调用 CreateProcess(),但它失败了。

通过将 NULL 传递给 lpEnvironment 以继承调用者的环境,或指定有效的 SystemRoot 环境变量,检查您是否创建了进程。

完全没有记录的 AFAIK,但它对我有用。

关于c++ - 为什么 Windows 不允许在模拟另一个用户时启动 WinSock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1554878/

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