2011-10-07 17 views
12

, ya que es posible que sepa que uno no puede crear conectores RAW utilizando Windows Sockets sin tener privilegios administrativos. El problema es que necesito enviar mensajes ICMP, así que necesito conectores RAW. El problema: mi programa necesita ejecutarse sin privilegios administrativos.¿Por qué funciona el ping sin privilegios de administrador?

Eso me llevó a la pregunta, ¿cómo la herramienta de ping envía mensajes ICMP sin privilegios administrativos?

+0

Intente realizar una llamada al sistema para 'ping [nombre de host]' dentro de su aplicación; no creo que necesite privilegios administrativos. Además, ¿qué has intentado, y si está fallando, cuál es el mensaje de error? – jefflunt

+0

No estoy seguro de que funcione sin privilegios de administrador. Anteriormente recibí un ping con algún tipo de mensaje de error de "acceso denegado" en Vista. Mi Win7 no, pero tengo el UAC desactivado, por lo que mi situación actual puede ser atípica. –

+0

@normalocity: No necesito hacer ping, necesito algunos otros mensajes ICMP. Es por eso que quiero saber cómo ping puede enviar ICMP sin derechos de administrador ...;) – dom0

Respuesta

13

Aunque ICMP utiliza conectores RAW (que requieren derechos de administrador en Win2K y versiones posteriores), Microsoft elude sus propias reglas de seguridad para permitir que sus API ICMP pasen. Como tal, no use conectores RAW directamente para enviar sus propios mensajes ping ICMP. Use IcmpSendEcho() y funciones relacionadas en su lugar.

+0

¡Gracias eso me ayuda mucho! – dom0

+0

@Remy Lebeau ¿En qué unidad o envoltorio está implementado el 'IcmpSendEcho'? – user1580348

+0

@ user1580348: si [lee la documentación] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa366050.aspx), verá que se trata de una función exportada en 'Icmp. dll' (Win2K) y 'Iphlpapi.dll' (XP y posterior). –

Cuestiones relacionadas