Zugriff auf eine Datei auf einem Netzlaufwerk

Hintergrund: Ich habe eine Anwendung, die von Dateien auf einem Netzlaufwerk lesen muss (Z :)

Dies funktioniert in meiner Office-Domäne hervorragend, jedoch nicht vor Ort (in einer anderen Domäne). Soweit ich weiß, werden die Domänenbenutzer und Netzlaufwerke auf die gleiche Weise festgelegt, ich habe jedoch keinen Zugriff auf Benutzer usw. in der Kundendomäne.

Als ich nicht auf das Netzlaufwerk zugreifen konnte, dachte ich, ich brauche ein Token für einen Benutzer. So überführe ich den Benutzer:

[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();
}

Nun ist hier der interessante / seltsame Teil. In meinem Netzwerk kann die Anwendung bereits auf das Netzwerklaufwerk zugreifen. Wenn ich versuche, mich als aktiver Benutzer auszugeben (genau derselbe Benutzer, einschließlich derselben Domäne), kann sie nicht auf das Netzwerklaufwerk zugreifen.

Das macht mich hilflos, da ich jetzt keine Ahnung habe, was funktioniert und was nicht und ob es vor Ort funktioniert?

Was vermisse ich?

BEARBEITEN: Ich habe vergessen, dies zu schreiben, als ich ursprünglich die Frage gestellt habe: Ich habe versucht, einen gültigen Domainnamen einzugeben, und es hat nicht funktioniert. Danach habe ich versucht, null einzugeben, um denselben Benutzernamen wie ohne diesen Code zu erhalten (da dies standardmäßig funktioniert) in unserer Domain). Das hat nicht geholfen, und so ist domain = null; endete in dieser Frage.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage