2011-10-07 12 views
12

Jak wiadomo, nie można utworzyć gniazd RAW przy użyciu gniazdek Windows bez uprawnień administratora. Problem polega na tym, że muszę wysyłać komunikaty ICMP, dlatego potrzebuję gniazd RAW. Problem: Mój program musi działać bez uprawnień administratora.Dlaczego ping działa bez uprawnień administratora?

Które doprowadziły mnie do pytania, w jaki sposób narzędzie ping wysyła wiadomości ICMP bez uprawnień administratora?

+0

Spróbuj wykonać wywołanie systemowe na 'ping [nazwa hosta]' w aplikacji - nie uważam, że potrzebuje uprawnień administratora. Ponadto, co próbujesz, a jeśli się nie powiedzie, jaki jest komunikat o błędzie? – jefflunt

+0

Nie jestem pewien, czy działa bez uprawnień administratora. Wcześniej otrzymałem polecenie ping z jakimś komunikatem o błędzie "odmowa dostępu" w systemie Vista. Mój Win7 nie, ale mam UAC wyłączony, więc moja obecna sytuacja może być nietypowa. –

+0

@normalocity: Nie potrzebuję pingowania, potrzebuję innych komunikatów ICMP. Właśnie dlatego chcę wiedzieć, w jaki sposób ping może wysyłać ICMP bez praw administratora ...;) – dom0

Odpowiedz

13

Chociaż protokół ICMP korzysta z gniazd RAW (które wymagają uprawnień administratora w systemie Win2K i nowszych), firma Microsoft obchodzi własne reguły zabezpieczeń, aby umożliwić korzystanie z interfejsów ICMP API. W związku z tym nie używaj gniazd RAW bezpośrednio do wysyłania własnych komunikatów ping ICMP. Zamiast tego użyj funkcji IcmpSendEcho() i funkcji pokrewnych.

+0

Dzięki, że bardzo mi pomaga! – dom0

+0

@Remy Lebeau W której jednostce lub opakowaniu zastosowano 'IcmpSendEcho'? – user1580348

+0

@ user1580348: jeśli [czytasz dokumentację] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa366050.aspx), zobaczysz, że jest to funkcja wyeksportowana w 'Icmp. dll' (Win2K) i 'Iphlpapi.dll' (XP i nowsze). –

Powiązane problemy