Acessando um arquivo em uma unidade de rede

Fundo: Eu tenho um aplicativo que precisa ler arquivos em uma unidade de rede (Z :)

Isso funciona muito bem no domínio do meu escritório, mas não funciona no site (em um domínio diferente). Tanto quanto posso dizer, os usuários do domínio e as unidades de rede estão definidos da mesma maneira, no entanto, não tenho acesso aos usuários etc. no domínio do cliente.

Quando não consegui acessar a unidade de rede, achei que precisava de um token para um usuário. É assim que eu imerso no usuário:

[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);

...

const string userName = "USER";
const string pass = "PASS";
const string domainName = "VALIDDOMAIN.local"  //tried with valid domain name and with null, same result
const int LOGON32_PROVIDER_DEFAULT = 0;
const int LOGON32_LOGON_INTERACTIVE = 2;

IntPtr tokenHandle = new IntPtr(0);

bool returnValue = LogonUser(userName, domainName, pass,
            LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
            ref tokenHandle);

if (!returnValue)
    throw new Exception("Logon failed.");

WindowsImpersonationContext impersonatedUser = null;
try
{
    WindowsIdentity wid = new WindowsIdentity(tokenHandle);
    impersonatedUser = wid.Impersonate();

}
finally
{
    if (impersonatedUser != null) impersonatedUser.Undo();
}

Agora, aqui está a parte interessante / estranha. Na minha rede, o aplicativo já pode acessar a unidade de rede e, se eu tentar representar o usuário ativo (exatamente o mesmo usuário, incluindo o mesmo domínio), ele não poderá acessar a unidade de rede.

Isso me deixa impotente, já que agora não tenho idéia do que funciona e do que não funciona, e mais ao ponto, funcionará no local?

o que estou perdendo?

EDITAR: Esqueci-me de escrever isso enquanto fazia a pergunta: tentei inserir um nome de domínio válido e não funcionou. Depois disso, tentei inserir nulo para obter o mesmo nome de usuário que faria sem esse código (já que funciona por padrão em nosso domínio). Isso não ajudou, e é assim que domain = null; acabou nesta pergunta.

questionAnswers(2)

yourAnswerToTheQuestion