2008-09-26 12 views

Respuesta

6

La respuesta simple sería probarlo y ver. Las API de seguridad de Windows no son para un corazón débil, y es posible que tenga permiso de escritura sin tener permiso para ver los permisos.

3

Echa un vistazo a esta publicación del foro.

http://bytes.com/forum/thread389514.html

En él se describe el uso de los objetos en el espacio de nombres System.Security.AccessControl para obtener una lista de los permisos de ACL para un archivo. Solo está disponible en .NET 2.0 y versiones posteriores. Creo que también supone que tienes una red SMB. No estoy seguro de qué haría si estuviera usando una red que no sea de Windows.

Si no está en .NET 2.0 o superior, es el jazz API pInvoke y Win32 habitual.

1

ScottKoon se escribe sobre la comprobación de los permisos de Windows ACL. También puede verificar los permisos de código administrado utilizando CAS (Seguridad de acceso de código). Este es un método específico de .Net para restringir permisos. Tenga en cuenta que si el usuario no tiene permisos de escritura, entonces el código nunca tendrá permisos de escritura (incluso si CAS dice que sí): los permisos más restrictivos entre los dos ganan.

CAS es bastante fácil de usar: incluso puede agregar atributos declarativos cuando inicie sus métodos. Usted puede leer más en MSDN

4

estado allí, la mejor y más confiable solución que encontré fue esto:

bool hasWriteAccess = true; 
string remoteFileName = "\\server\share\file.name" 

try 
{ 
    createRemoteFile(remoteFileName); 
} 
catch (SystemSecurityException) 
{ 
    hasWriteAccess = false; 
} 

if (File.Exists(remoteFileName)) 
{ 
    File.Delete(remoteFileName); 
} 

return hasWriteAccess; 
+2

Recuerde que es posible que un usuario de Windows para tener permisos de escritura a un archivo o carpeta, pero NO tiene permiso para borrar lo mismo (con escritura pero NO modificar) – hromanko

Cuestiones relacionadas