¿Cómo puedo determinar si tengo permiso de escritura en una máquina remota en mi intranet usando C# en .Net?¿Cómo puedo determinar mediante programación si tengo privilegios de escritura usando C# en .Net?
Respuesta
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.
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.
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
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;
- 1. ¿Cómo puedo determinar mediante programación si un archivo MP3 es CBR o VBR? (Preferiblemente usando C#)
- 2. ¿Cómo obtener privilegios de root mediante programación?
- 3. ¿Cómo puedo determinar mediante programación si está instalado Visual C++ Runtime 8.0?
- 4. ¿Cómo puedo determinar mediante programación si la barra de tareas de Windows está oculta o no?
- 5. En Linux: ¿cómo puedo determinar mediante programación si una interfaz NIC está habilitada y conectada?
- 6. ¿Cómo puedo determinar mediante programación si mi estación de trabajo está bloqueada?
- 7. mediante programación en C#
- 8. ¿Puedo instalar mediante programación una nueva versión de .NET usando .NET?
- 9. ¿Cómo puedo determinar qué iOS SDK tengo?
- 10. MySQL: ¿Cómo determinar las relaciones de claves foráneas mediante programación?
- 11. ¿Cómo puedo determinar si se gestiona un proceso en C#?
- 12. ¿Cómo puedo crear una cadena en C# mediante programación?
- 13. eliminar mediante programación un servicio usando C#
- 14. Cómo determinar mediante programación las aplicaciones predeterminadas en Linux
- 15. ¿Cómo puedo posicionar una vista mediante programación usando puntos relativos?
- 16. Cómo comprobar si tiene conexión a Internet en vivo mediante programación mediante C++
- 17. ¿Puedo determinar si Matlab se está ejecutando como con privilegios elevados en Windows?
- 18. Privilegios de escritura - localhost - Mac OSX
- 19. ¿Cómo puedo agregar una computadora a un dominio mediante programación (usando .NET)?
- 20. ¿Cómo puedo generar un evento mediante reflejo en .NET/C#?
- 21. ¿Cómo puedo determinar cuánta memoria está usando mi programa .NET?
- 22. ¿Cómo puedo determinar mediante programación la página de códigos predeterminada actual de Windows?
- 23. ¿Cómo puedo determinar mediante programación los elementos XML que se pueden insertar a continuación?
- 24. Buscar mediante programación si bajo C++ o C++/CLI
- 25. ¿Cómo puedo determinar el tipo de repositorio SVN que tengo?
- 26. ¿Cómo puedo detectar si tengo el permiso CREATE TABLE?
- 27. cambiar el nombre de la computadora mediante programación C# .net
- 28. ¿Es posible determinar mediante programación si se está reproduciendo un video?
- 29. Usando .Net, ¿cómo puedo determinar si un tipo es un ValueType numérico?
- 30. ¿Cómo puedo determinar si existe un subdirectorio en C#?
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