El acceso compartido de red a través de Process.Start (ruta de acceso) usando red de credenciales

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

Pregunta

Estoy utilizando esta clase Imitador para hacerse pasar por una cuenta de dominio para acceder a una recurso compartido de red, así:

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

Copia el archivo desde el recurso compartido de red funciona bien:

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

Sin embargo, el uso de Process.Start para ver el recurso compartido UNC en el Explorador lanza un "Error de inicio: nombre de usuario desconocido o contraseña incorrecta":

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

Al sospechar que la clase Imitador tiene la culpa, que intentó suministrar manualmente las credenciales para ProcessStartInfo este 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);

Aún no hay alegría. Tenga en cuenta que estoy seguro de que mi netCred (NetworkCredential) es correcta, ya que he utilizado para hacer conexiones previas a los recursos autenticados.

Entonces, ¿Cómo puedo ver una ruta UNC en el Explorador de red mediante una credencial?

¿Fue útil?

Solución

Yo tenía el mismo problema hoy en día, y esto es lo que funcionó para mí:

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

Otros consejos

En lugar de pasar el uncpath a la Process.Start, intentar el inicio de "explorador" en Process.Start y pasar el uncpath como propiedad ProcessStartInfo de 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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top