Estoy trabajando en una pieza de software que necesita copiar un archivo a un directorio determinado en el sistema de archivos. Debe funcionar tanto en sistemas operativos con reconocimiento de UAC (Vista, 7) como en XP. Para evitar el problema de escribir en un directorio donde se requiere la elevación de UAC, la aplicación realmente inicia otro proceso con un manifiesto que establece que se requiere UAC. Esto genera el mensaje y luego hace la copia cuando el usuario confirma.C# .NET - cómo determinar si el directorio es grabable, con o sin UAC?
Por lo que puedo ver, un directorio puede tener tres estados de permisos lógicos diferentes: grabable sin elevación UAC, escribible con elevación UAC y no grabable.
Mi pregunta es esta: para un directorio determinado, ¿cómo puedo determinar de manera confiable si el usuario actual puede copiar (y potencialmente sobreescribir) un archivo en ese directorio, y si puedo, cómo puedo determinar si es necesaria la elevación de UAC ?
En XP, esto podría ser tan simple como comprobar si se concede el permiso 'Permitir escritura', pero en Vista/7, hay directorios donde no se concede este permiso, pero esta acción aún es posible con UAC .
Gracias - Acabo de probar esto, y aunque esto me dice si puedo escribir con la identidad actual, devuelve falso si tanto el acceso de escritura está explícitamente denegado como si está permitido con una elevación UAC. Necesito diferenciar entre estas dos últimas situaciones. Sin embargo, lo tomaré como punto de partida. – growse