在我的环境中,我在同一个域中拥有以下计算机:
我的服务在 hostname1 上以本地系统帐户运行。 该服务依次运行另一个继承本地系统权限并尝试访问共享文件夹 \\ hostname2 \ ADMIN $ 的进程。 主机名1 和主机名2 都位于同一个域中。
我可以使用资源管理器访问没有来自 hostname1 或 hostname3 的凭据的共享文件夹,但是当衍生进程尝试使用 WNetAddConnection2 功能时访问共享文件夹时返回错误 1326 ( ERROR_LOGON_FAILURE(0x52E))。相同的代码适用于另一台计算机(\\ hostname3 \ ADMIN $)。传递给WNetAddConnection2函数的凭据是正确的。如果本地用户将其作为正常进程运行,则相同的代码可以正常工作。
如何配置hostname2以接受来自本地系统帐户的连接?
使用Harry Johnston建议的语法 hostname2 \ username ,我设法让WNetAddConnection2功能正常工作(返回0)。
然而,当我像这样调用函数 OpenSCManager 时:
OpenSCManager( "hostname2" , SERVICES_ACTIVE_DATABASE , SC_MANAGER_ENUMERATE_SERVICE);
我收到错误 5 (ERROR_ACCESS_DENIED(0x5))。