.net - qué - tags in google tag manager
¿Cómo verificar si un usuario determinado es miembro del grupo de administradores integrado? (4)
Hay una API Win32 para esto P / Invoke: IsUserAnAdmin
La pregunta es más compleja en Vista ... vea esta publicación en el blog .
Necesito comprobar programáticamente (en .NET) si un usuario determinado (cuenta de dominio) es miembro del grupo de administradores integrado en una computadora actual (aquella en la que se ejecuta la aplicación).
¿Es posible?
No sé sobre .Net, pero en win32, la manera más fácil es llamar a IsUserAnAdmin (). Si necesita más control, puede abrir el token de proceso y consultar con CheckTokenMembership para cada grupo que necesite verificar
Editar: ver pinvoke.net para .NET código de ejemplo (Gracias chopeen)
Si está hablando del usuario actualmente en ejecución, entonces
using System.Security.Principal;
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal wp = new WindowsPrincipal(identity);
if (wp.IsInRole("BUILTIN/Administrators"))
// Is Administrator
else
// Is Not
De lo contrario, espero que sea posible establecer la identidad de un usuario en particular, pero no analizar cómo.
Podrías repetir los grupos como lo hice en esta respuesta:
Determinación de miembros de grupos locales a través de C #
Después de leer un poco más, lo más fácil sería usar el espacio de nombres System.DirectoryServices.AccountManagement
. Aquí es cómo se puede usar:
http://www.leastprivilege.com/SystemDirectoryServicesAccountManagement.aspx
Muestra:
public static bool IsUserInGroup(string username, string groupname, ContextType type)
{
PrincipalContext context = new PrincipalContext(type);
UserPrincipal user = UserPrincipal.FindByIdentity(
context,
IdentityType.SamAccountName,
username);
GroupPrincipal group = GroupPrincipal.FindByIdentity(
context, groupname);
return user.IsMemberOf(group);
}