Supongo que te refieres no a los atributos (sólo lectura, oculto, etc.), sino a qué permisos tiene cada usuario en una carpeta (o archivo en general).
Bueno... hay una udf que trabaja precisamente con las
ACL (Access Control List) de Windows. Es esta y por los comentarios parece bastante buena:
http://www.autoitscript.com/forum/topic ... sions-udf/
Eso sí, para manejar eso hay que entender el
ACL y sus estructuras, que ya es cosa avanzada. En esa entrada remiten aquí para la estructura utilizada:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Si ya sabes de estas cosas y el problema es pasarlo a AuoIt esa UDF te irá a las mil maravillas (y ya nos enseñarás a usarla).
Si no sabes manejar el ACL el AutoIt será el menor de tus problemas, porque primero tendrás que entender eso...
Otra opción que se me ocurre es usar un comando del Dos Shell que te da esta información y tratar la salida desde AutoIT. Es el comando
cacls. Por ejemplo si hago en mi ordenador en una ventana DOS:
cacls c:\Windows
(en este caso es una carpeta pero funciona con cualquier tipo de archivo)
Eso me devuelve:
Código: Seleccionar todo
C:\Documents and Settings\carto1\WINDOWS DOMIX\carto1:F
DOMIX\carto1:F
DOMIX\carto1:(OI)(CI)(IO)F
DOMIX\carto1:(OI)(CI)(IO)F
NT AUTHORITY\SYSTEM:F
NT AUTHORITY\SYSTEM:(OI)(CI)(IO)F
BUILTIN\Administradores:F
BUILTIN\Administradores:(OI)(CI)(IO)F
Por el formato veis que es un XP pero supongo que en Vista seguirá la misma estructura.
Ahí ves
para cada DOMINIO/usuario los permisos que tiene. Salen líneas repetidas que habrá que depurar en AutoIt, supongo que es por los permisos heredados, pero no lo tengo claro.
Ejecuta simplemente
cacls sin parámetros para ver la ayuda:
OI, CI y IO son códigos para indicar tipo de herencia.
En el ejemplo sólo aparece el permiso
F (Full-control total) pero también pueden aparecer
R (Read-lectura),
W (Write-escritura),
C (Change-modificar)
Por el foro hay ejemplos de cómo ejecutar comandos del shell y tomar la salida (lo más fácil es redirigirla a un archivo y leer de ahí, también se puede capturar directamente la salida estándar aunque eso es algo más complicado).
Para ejecutarlo puedes usar esto:
Código: Seleccionar todo
Run(@ComSpec & " /c cacls " & $rutaarchivo & " > salida.txt", @TempDir, @SW_HIDE)
Así es independiente de la versión y nombre del intérprete de comandos
Y luego analizas "salida.txt" para elaborar el listado que buscas.
Ya nos dices.