Permisos denegados ¿Con derecho administrativo?

Iniciado por rigorvzla, 2 Mayo 2020, 14:49 PM

0 Miembros y 1 Visitante están viendo este tema.

rigorvzla

Hola amigos, espero todos esten bien, les traigo una consulta,  ya que no entiendo la razon del porque ocurre lo siguiente:

string[] files = Directory.GetFiles(@"C:\\", "*.*", SearchOption.AllDirectories);

se supone que con este codigo, deberia obtener un arreglo en teoria, de todos los archivos del equipo ubicadosen el disco "C:\" , eh creado un archivo manifiest en mi proyecto, donde doy permiso de administrador al ejecutar el programa, pero me arroja error, segun po r no tener perimiso para leer archivos de programas, alguien me podria ayudar y explicar, la razon de eso.

De antemano gracias.

P.D: en la carpeta windows me ocurre lo mismo con una carpeta llamada  "CSC".

EdePC

Saludos,

He estado revisando y la carpeta c:\windows\csc tiene únicamente como usuario con privilegios a System

CitarC:\Users\EdSon>whoami
nt authority\system

C:\Users\EdSon>icacls c:\Windows\CSC
c:\Windows\CSC NT AUTHORITY\SYSTEM:(F)

-- Ahí dice que solamente System tiene Full permisos, no hay nadie más

Se procesaron correctamente 1 archivos; error al procesar 0 archivos

C:\Users\EdSon>

- Osea, ningún otro usuario podría tan siquiera ver que hay dentro o ver sus permisos, ni siquiera Administradores. Cualquier usuario puede poner los permisos que quiera a sus carpetas (ser dueño), incluso negar permisos a los Administradores o System, PERO un usuario con permisos de Administrador puede cambiar el Dueño de la carpeta o archivos y luego si que se puede dar o quitar permisos.

- En conclusión: Hay carpetas y archivos con permisos especificados que deniegan el acceso a estos, estos permisos tienen usa Lista Blanca o Negra que contiene una lista de Usuarios o Grupos de usuarios a los que afecta estos permisos. La metodología para "manipular" estas carpetas o archivos protegidos es tener permisos para hacerlos, si no se tienen hay que cambiar el dueño de estos y luego si que se pueden dar todo tipo de permisos.

- Tienes que buscar la manera de controlar la excepción y saltarte estos de acuerdo al tipo de excepción:
https://docs.microsoft.com/en-us/dotnet/api/system.io.directory.getfiles?view=netcore-3.1
https://docs.microsoft.com/en-us/dotnet/api/system.io.ioexception?view=netcore-3.1

rigorvzla

gracias `por la respuesta, y si me parece buena idea esa de saltarme carpetas, pero... archivos de programas??? esa la necesito, que crees q deberia hacer en ese caso??

RayR

Lo que pasa es que la carpeta "Archivos de programa" en realidad se llama "Program Files", independientemente del idioma de tu Windows. La versión traducida es en realidad un enlace simbólico o (más correctamente, un junction point) y para esa no tienes permisos, pero sí para Program Files. Algo similar pasa con otras carpetas como "Documents and Settings" o "Archivos comunes".

En resumen, no te preocupes por ese error. Ve la forma de saltarte carpetas, y así, aunque tu programa no leerá "Archivos de programa", sí que lo hará con "Program Files", que es lo que en realidad quieres.

rigorvzla

ok, buscare de hacer eso, pero ahora algo me inquieta , independientemente el nombre sea en español o en ingles, si me salto la que sale en C:\ , entocnes donde mas registrara dichos archivos??

RayR

Primero, aclaro que lo de los enlaces simbólicos y junctions no sólo pasa por cuestiones de traducción. En algunos casos Windows los usa para mantener compatibilidad hacia atrás (por ejemplo, "Documents and Settings" apunta a "Users") u otras razones, así que estos problemas de permisos te los encontrarás aún con carpetas cuyo nombre no cambia en la versión en español de Windows.

No sé si entendí bien la pregunta. ¿Por qué tendrías que saltarte "C:\"? Es perfectamente posible leer su contenido. Otra cosa es que alguna subcarpeta te niegue el acceso, pero en ese caso lo que te saltarías sería dicha carpeta, no la raíz.

En todo caso, si ejecutas el comando "dir /al", te mostrará los enlaces que hay dentro de la carpeta actual y a dónde apuntan.

Ten en cuenta que independientemente de esto, va a haber carpetas a las que simplemente no vas a tener acceso porque no tienes los permisos. No te recomiendo que intentes cambiarlos (y de todas formas, por lo general estas carpetas son de muy poco interés) así que lo mejor es saltártelas.