在我的环境中,我在同一个域上有以下机器:
- hostnam1(Windows 7 企业版)
- hostnam2(Windows 7 企业版)
- hostnam3(Windows Server 2012 R2 域控制)
我有一个在hostname1上作为本地系统帐户运行的服务。该服务依次运行另一个进程,该进程继承本地系统权限并尝试访问共享文件夹\\hostname2\ADMIN$。hostname1和hostname2都在同一个域中。
我可以使用资源管理器访问没有来自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) )。