soy - ¿Cómo puedo determinar programáticamente si tengo privilegios de escritura usando C#en.Net?
permisos de escritura c# (4)
¿Cómo puedo determinar si tengo permiso de escritura en una máquina remota en mi intranet usando C # en .Net?
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.
Mira esta publicación en el foro.
http://bytes.com/forum/thread389514.html
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 habitual jazz API pInvoke y Win32.
ScottKoon escribe sobre verificar 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 al inicio de sus métodos. Puede leer más en MSDN
He estado allí también, la mejor y más confiable solución que encontré fue esta:
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;