2012-04-29 82 views
7

Así que he buscado la respuesta varias veces, y me he entrometido con cosas de permisos en vano, pero este código todavía no me permite descargar un archivo a una ruta especificada.No se puede acceder al archivo - WebClient.DownloadFile

WebClient client = new WebClient(); 
client.DownLoadFile("http://dl.dropbox.com/u/(My account)/Installer.jar", @"c:\Games\Name\libs"); 
client.DownLoadFile("http://dl.dropbox.com/u/(My account)/Name.zip", @"c:\Games\Name"); 

Siempre me da: "Acceso a la ruta 'c: \ Games \ Name \ libs' denegado."

También tenga en cuenta, utilizando Windows XP SP3.

+0

Plese no prefijo sus títulos con "C# -" y tal. Para eso son las etiquetas. –

Respuesta

2

La aplicación probablemente no tenga permiso para escribir en esa carpeta. Si se trata de una aplicación cliente, intente ejecutarla como administrador. De lo contrario, cambie los permisos en 'c: \ Games \ Name \ libs' a control total para todos.

+0

Correcto, simplemente no sé cómo hacer que solicite permiso o algo así, supongo. También soy el administrador en mi computadora, así que eso es simplemente extraño. Además de eso. Parece que no puedo deshabilitar el atributo "solo lectura" en las carpetas. O_o – Fishrock123

+0

Haga clic con el botón derecho en la carpeta y haga clic en Propiedades. Busque la pestaña de seguridad. – tzerb

+0

Win XP SP3 no tiene esa pestaña ... Y no quiero que las personas que usan mi programa tengan que hacerlo a través de las propiedades. > _ < – Fishrock123

1

Si se niega el acceso a allí, intente ejecutarlo como administrador.

Si no funciona, vaya a la carpeta C:\Games\Name\libs, haga clic derecho y vaya a Propiedades. Elija la pestaña "Seguridad", seleccione en la lista superior el grupo de usuarios que ejecutará su programa. (Intente usar Users (YourName-PC\Users)). Con esta opción, haga clic en Editar en la parte inferior de la lista, y en la lista inferior, seleccione Full control en Allow.

0

puede usar código de abajo para ver si tiene permiso de escritura en la carpeta, si no se establece la regla de no usar setaccesscontrol antes de descargar

public static bool HaveWritePermissionsForFolder(string path) 
    { 
     var rules = Directory.GetAccessControl(Path.GetDirectoryName(Path.GetDirectoryName(path))).GetAccessRules(true, true, typeof(SecurityIdentifier)); 

     bool allowwrite = false; 
     bool denywrite = false; 
     foreach (FileSystemAccessRule rule in rules) 
     { 
      if (rule.AccessControlType == AccessControlType.Deny && 
       (rule.FileSystemRights & FileSystemRights.WriteData) == FileSystemRights.WriteData && 
       (groups.Contains(rule.IdentityReference) || rule.IdentityReference.Value == sidCurrentUser) 
       ) 
      { 
       denywrite = true; 
      } 
      if (rule.AccessControlType == AccessControlType.Allow && 
       (rule.FileSystemRights & FileSystemRights.WriteData) == FileSystemRights.WriteData && 
       (groups.Contains(rule.IdentityReference) || rule.IdentityReference.Value == sidCurrentUser) 
       ) 
      { 
       allowwrite = true; 
      } 
     } 


     if (allowwrite && !denywrite) 
      return true; 

     return false; 
    } 
+0

Ok, entonces necesito establecer el acceso. Yo sé eso. Pero no puedo entender cómo. – Fishrock123

+0

intenté esto http://msdn.microsoft.com/en-us/library/system.io.directory.setaccesscontrol.aspx? –

+0

No he probado la seguridad del directorio en lugar del archivo, supongo que lo haré. ¿Pero qué se supone que debo poner para @ "MYDOMAIN \ MyAccount" de todos modos? – Fishrock123

11

Hola He probado el código de seguridad a nivel local y consiguió el mismo error "Acceso denegado ":

WebClient myWebClient = new WebClient(); 
    myWebClient.DownloadFile("http://localhost:1929/2.png", @"C:\Z\) 

intente especificar el nombre del archivo al final de la guía, guarda localmente ningún problema cuando me encontré con él:

WebClient myWebClient = new WebClient(); 
    myWebClient.DownloadFile("http://localhost:1929/2.png", @"C:\Z\FILENAME.jpg") 
+0

Como dije, funcionó, después de agregar extensión de archivo –

Cuestiones relacionadas