当VC服务程序调用远程资源时,经常返回路径不存在等问题
这是因为Windows中,服务程序以System用户登录,而不是桌面用户登录
这样就导致,虽然桌面程序已经映射网络资源,但System用户仍无法访问的问题
为了可以访问远程资源,可以调用API:WNetAddConnection2
BOOL AcessNetworkDrtive(CString szDevice,CString szDeviceName,CString szUsername,CString szPassword) { DWORD dwRetVal; NETRESOURCE nr; memset(&nr, 0, sizeof (NETRESOURCE)); nr.dwType = RESOURCETYPE_ANY; nr.lpLocalName = strDevice.GetBuffer(szDevice.GetLength()); nr.lpRemoteName = szDeviceName.GetBuffer(szDeviceName.GetLength()); nr.lpProvider = NULL; dwRetVal = WNetAddConnection2(&nr, szUsername, szUsername, CONNECT_UPDATE_PROFILE); if (dwRetVal != NO_ERROR) { CString cError; cError.Format(TEXT("[ERROR]WNetAddConnection2 Failed: %u\n"), dwRetVal); LogEvent(cError,TEXT("With remote name "),nr.lpRemoteName); return dwRetVal; } return dwRetVal; }