Zugriff auf Netzwerkfreigabe über Process.Start (Pfad) -Netzwerk Credential unter Verwendung von
-
29-09-2019 - |
Frage
dieser Impersonator Klasse ein Domänenkontos für den Zugriff eines zum Imitieren Netzwerkfreigabe wie folgt:
using(new Impersonartor(username, domain, password))
{
//Code Here
}
Kopieren Sie die Datei von der Netzwerkfreigabe funktioniert in Ordnung:
using(new Impersonartor(username, domain, password))
{
CopyAll(uncPath, localPath)
}
Allerdings Process.Start mit der UNC-Freigabe in Explorer anzuzeigen wirft eine „Anmeldung fehlgeschlagen: unbekannter Benutzername oder falsches Kennwort“:
using(new Impersonartor(username, domain, password))
{
Process.Start(uncPath)
}
Verdacht besteht, dass die Impersonator Klasse fehlerhaft ist, habe ich versucht, manuell die Anmeldeinformationen an Process Versorgung etwa so:
System.Diagnostics.ProcessStartInfo viewDir = new System.Diagnostics.ProcessStartInfo(uncPath);
viewDir.UseShellExecute = false;
viewDir.Domain = netCred.Domain;
viewDir.UserName = netCred.UserName;
viewDir.Password = ConvertToSecureString(netCred.Password);
System.Diagnostics.Process.Start(viewDir);
Noch keine Freude. Beachten Sie, dass ich bin sicher, dass mein netCred (NetworkCredential) korrekt ist, wie ich vor Verbindungen zu authentifizierte Ressourcen habe zu verwenden.
Also, wie kann ich einen UNC-Pfad im Explorer ein Netzwerk Berechtigungsnachweis mit?
Lösung
Ich hatte das gleiche Problem heute und hier ist das, was für mich gearbeitet:
private void OpenNetworkPath(string uncPath)
{
System.Diagnostics.Process.Start("explorer.exe", uncPath);
}
Andere Tipps
Statt die uncPath zum Process.Start
zugeben, versuchen Sie "Explorer" in Process.Start
beginnt und die uncPath als ProcessStartInfo
der Arguments
Eigenschaft übergeben.
System.Diagnostics.ProcessStartInfo viewDir = new System.Diagnostics.ProcessStartInfo("explorer.exe");
viewDir.UseShellExecute = false;
viewDir.Domain = netCred.Domain;
viewDir.UserName = netCred.UserName;
viewDir.Password = ConvertToSecureString(netCred.Password);
viewDir.Arguments = uncPath;
System.Diagnostics.Process.Start(viewDir);