2011-09-11 25 views
5

Quiero mostrarles a mis usuarios (y a mí) cuáles son sus privilegios y darles la capacidad de elevar su privilegio (u obtener a alguien más) antes de ejecutar el comando MakeSymbolicLink .privilegio de usuario de Windows 7 y revisión de seguridad

El comando de línea de comando equivalente (mklink) requiere elevación de permisos. Quiero dar a mis usuarios muchos accesos directos funcionales a través de un grueso siguiente de directorios. Los enlaces abarcan discos y sistemas de archivos remotos.

¿Cuál es la forma canónica programática (C# o C++) para desenterrar las configuraciones de seguridad un privilegio para un usuario particular mientras está conectado?

+1

Buena pregunta, aunque es posible que desee aceptar algunas respuestas más a sus preguntas antes de esperar que la gente lo ayude. – Tim

+0

posible duplicado de [¿cómo se puede verificar fácilmente si se deniega el acceso para un archivo en .NET?] (Http://stackoverflow.com/questions/265953/how-can-you-easily-check-if-access-is -denied-for-a-file-in-net) –

+0

Para llamar a GetNamedSecurityInfo, el privilegio SE_SECURITY_NAME debe estar habilitado para el proceso de llamada. SE_BACKUP_NAME y SE_RESTORE_NAME probablemente estén bien para GetFileSecurity. Pero nuevamente, si invoca esos privilegios, lo más probable es que no tenga que lidiar con un problema de acceso denegado. Si tiene la intención de ejecutar bajo una cuenta con menos privilegios, puede informar al usuario qué permiso se deniega en qué archivo/carpeta y qué hacer (por ejemplo, sobre la elevación del hombro o cambiar de usuario). –

Respuesta

0

Puede usar WMI y acceder a Win32_LogicalFileSecuritySetting o algunas otras tablas y enumerar permisos basados ​​en ubicaciones de ruta de archivo local o UNC.

El espacio de nombres System.DirectoryServices en C# también le permite enumerar permisos en un usuario dado.

Así que tiene algunas chioces.

0

Puede encontrar una implementación en C++ de lo que está buscando en el siguiente artículo de CodeProject: Riding the Vista UAC elevator, up and down. Hace que sea fácil obtener el nivel de elevación actual y crear nuevos procesos en un nivel de elevación diferente. Cosas realmente agradables, que también funcionan en Windows 7.

+0

investigará. Usando C# pero puede interoperar (supongo). –

Cuestiones relacionadas