Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Cómo bloquear win7 con derechos de administrador!

¡Cómo bloquear win7 con derechos de administrador!

Pasos/Métodos

1. Mecanismo de aplicación de derechos de administrador cuando el software se está ejecutando

2. Cuando UAC está activado, en Win7 (Windows). Server 2008 R2) o Vista (Windows Server 2008) se ejecuta con permisos más bajos de forma predeterminada, pero en este caso, algunas de nuestras operaciones fallarán (como modificar el registro, escuchar puertos, escribir archivos en los directorios del sistema, etc.) , para lograr estas operaciones, es necesario ejecutar el programa con derechos de administrador.

3. Por supuesto, solo necesita hacer clic derecho en el programa y seleccionar "Ejecutar como administrador", pero cómo hacer que el programa se ejecute automáticamente con privilegios de administrador requiere un Manifiesto.

4. Primero, creemos un nuevo proyecto (demasiado vago para cambiar el nombre, simplemente llámelo WindowsFormsApplication1)

5. Siga la implementación de F5 (bueno, parece que está ahí). ¿No hay problema [documento vacío, es extraño si hay un problema...])? ])?

6. ¿Luego agregamos Manifest (la versión china se llama "archivo de lista de aplicaciones")?

7. Echemos un vistazo al contenido de Manifest--

lt;?xml version="1.0" encoding="utf-8"?

lt; asmv1: ensamblado manifestVersion="1.0" xmlns="urna: esquemas-microsoft-com: asm.v1" xmlns: asmv1="urna: esquemas-microsoft-com. asm.v1" xmlns: asmv2=" urna :schemas-microsoft-com:asm.v2" xmlns:xsi=":asm.v2"gt;

lt;securitygt;

lt; privilegios solicitados xmlns="urna: esquemas -microsoft-com:asm.v3"gt;

lt;! -- Opciones de manifiesto UAC

Si desea cambiar el nivel de Control de cuentas de usuario de Windows, ¿reemplace este nodo con uno de los siguientes?

nodo RequestedExecutionLevel.

lt; nivel de ejecución solicitado="asInvoker" uiAccess="false" /gt;

lt; nivel de ejecución solicitado="requireAdministrator" uiAccess="false" /gt;

lt;requestedExecutionLevel level="highestAvailable" uiAccess="false" /gt;

Si desea utilizar la compatibilidad con versiones anteriores proporcionada por la virtualización de archivos y registros

elimine el Nodo de nivel de ejecución solicitado.

--gt;

lt; requestExecutionLevel nivel="asInvoker" uiAccess="false" /gt;

lt;/requestedPrivilegesgt;

lt;/securitygt;

lt;/trustInfogt;

lt;/asmv1: asambleagt;?

8. Siempre que Invoker se reemplace con requireAdministrator, nuestro programa requerirá derechos de administrador para ejecutarse de forma predeterminada, logrando el efecto de intentarlo.

Es, aparece la ventana. Echa un vistazo al ícono del programa:

Esto es un gran éxito...

9. Hablemos de cómo agregar un pequeño ícono de escudo al botón del programa. , ¿bien?

Necesitamos llamar a la API de Win32 para esto. ¿A qué API deberíamos llamar? Para hacer referencia al espacio de nombres:

usando System.Runtime.InteropServices;?

Luego llame a la API

[DllImport("user32.dll")] privada estático externo IntPtr SendMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

////////////////////////// / /////////////////////////////////////////////////

/// lt;summarygt;

// Habilita el icono de escudo superior en el control del botón dado

//// lt;/summarygt;

//// lt;param name="ThisButton"gt;

// Habilita el icono de escudo superior en el control del botón.

//lt;/paramgt;

///////////////////////////// / /////////////////////////////////////// ////

private void EnableElevateIcon_BCM_SETSHIELD(Button ThisButton)

{

//Validación de entrada, verificar si ThisControl está vacío

if (ThisButton == null)

{

return;

}

// Definir BCM_SETSHIELD localmente, inicialmente declarado en Commctrl.h. h

uint BCM_SETSHIELD = 0x0000160C;

//Establece el estilo del botón al estilo del sistema

ThisButton.FlatStyle = FlatStyle.

Enviar mensaje BCM_SETSHIELD al control de botón

SendMessage(new HandleRef(ThisButton, ThisButton.Handle), BCM_SETSHIELD, new IntPtr (0), new IntPtr(1));

}?

Arrastra un botón en el formulario, hazlo más grande para que no se pueda ver el ícono pequeño

Luego, en Form1_Load, usa la API para agregar el ícono al Botón1

privado void Form1_Load(objeto remitente, EventArgs e)

{

EnableElevateIcon_BCM_SETSHIELD(botón1);

}?

10, Ejecutar ¡Por última vez para ver el efecto!

¿Por qué el blindaje es diferente? El icono de arriba se muestra en Windows Server 2008 o Vista y Windows Server 2008 R2 debería verse así:

¿Dónde? Si me equivoco. por favor corrígeme.