Accesso alla condivisione di rete tramite Process.Start (percorso) utilizzando le credenziali di rete

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

Domanda

questa classe Imitatore di impersonare un account di dominio per accedere a un condivisione di rete in questo modo:

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

Copia del file dalla condivisione di rete funziona bene:

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

Tuttavia, utilizzando Process.Start per visualizzare l'condivisione UNC in Explorer lancia un "errore di accesso: nome utente sconosciuto o password non valida":

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

Sospettando che la classe Impersonator è in colpa, ho provato fornendo manualmente le credenziali per ProcessStartInfo in questo modo:

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

Ancora nessuna gioia. Si noti che io sono sicuro che il mio netCred (NetworkCredential) è corretto, come ho usato per effettuare le connessioni prima di risorse autenticati.

Quindi, come faccio a visualizzare un percorso UNC in Explorer utilizzando una credenziale di rete?

È stato utile?

Soluzione

Ho avuto lo stesso problema di oggi ed ecco cosa ha funzionato per me:

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

Altri suggerimenti

Invece di passare l'uncpath al Process.Start, provare ad avviare "explorer" in Process.Start e passare l'uncpath come proprietà ProcessStartInfo di 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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top