Index: dll/win32/rpcrt4/rpc_transport.c =================================================================== --- dll/win32/rpcrt4/rpc_transport.c (révision 57062) +++ dll/win32/rpcrt4/rpc_transport.c (copie de travail) @@ -310,6 +310,9 @@ RpcConnection_np *npc = (RpcConnection_np *) Connection; static const char prefix[] = "\\\\"; static const char local[] ="."; + BOOL bUseLocalName = TRUE; + CHAR ComputerName[MAX_COMPUTERNAME_LENGTH + 1]; + DWORD bufLen = MAX_COMPUTERNAME_LENGTH + 1; RPC_STATUS r; LPSTR pname; INT size; @@ -320,15 +323,41 @@ /* protseq=ncacn_np: named pipes */ size = strlen(prefix); + + /* HACK !! Because network (UNC) names don't work on ReactOS */ if (Connection->NetworkAddr == NULL || strlen(Connection->NetworkAddr) == 0) + { + bUseLocalName = TRUE; size += strlen(local); + } else - size += strlen(Connection->NetworkAddr); + { + if (GetComputerNameA(ComputerName, &bufLen)) + { + if (stricmp(ComputerName, Connection->NetworkAddr) == 0) + { + bUseLocalName = TRUE; + size += strlen(local); + } + else + { + bUseLocalName = FALSE; + size += strlen(Connection->NetworkAddr); + } + } + else + { + bUseLocalName = FALSE; + size += strlen(Connection->NetworkAddr); + } + } + /* End of the UNC HACK */ + size += strlen(Connection->Endpoint) + 1; pname = I_RpcAllocate(size); strcpy(pname, prefix); - if (Connection->NetworkAddr == NULL || strlen(Connection->NetworkAddr) == 0) + if (bUseLocalName) /* Part of the UNC HACK */ strcat(pname, local); else strcat(pname, Connection->NetworkAddr);