Accès à un partage réseau via Process.Start (chemin) en utilisant des titres de compétences réseau

StackOverflow https://stackoverflow.com/questions/4132035

Question

J'utilise cette classe Imitateur pour usurper l'identité d'un compte de domaine pour accéder à un partage réseau comme ceci:

using(new Impersonartor(username, domain, password))
{
//Code Here
}

Copie du fichier à partir du partage réseau fonctionne bien:

using(new Impersonartor(username, domain, password))
{
 CopyAll(uncPath, localPath)
}

Cependant, l'utilisation Process.Start pour afficher la part UNC dans l'Explorateur lance un « échec: nom d'utilisateur inconnu ou mot de passe incorrect »:

using(new Impersonartor(username, domain, password))
{
 Process.Start(uncPath)
}

Soupçonnant que la classe Imitateur est en faute, j'ai essayé fournir manuellement les informations d'identification à ProcessStartInfo comme ceci:

                        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);

Toujours pas de joie. Notez que je suis sûr que mon netCred (NetworkCredential) est correct comme je l'ai utilisé pour établir des connexions avant ressources authentifiées.

Alors, comment puis-je voir un chemin UNC dans l'Explorateur en utilisant un justificatif d'identité réseau?

Était-ce utile?

La solution

J'ai eu le même problème aujourd'hui et voici ce qui a fonctionné pour moi:

private void OpenNetworkPath(string uncPath)
{
   System.Diagnostics.Process.Start("explorer.exe", uncPath);
}

Autres conseils

Au lieu de passer le uncpath au Process.Start, essayez de démarrer "explorer" dans Process.Start et passer le uncpath comme la propriété de ProcessStartInfo Arguments.

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top