RAW socket 생성 Error - 원인은 관리자 권한 문제

2015. 11. 24. 16:30IT-개발/winapi 및 MFC

반응형


RAW socket 을 생성해서 ping 을 보내는 프로그램을 만들고 있는데...


    sockRaw = WSASocket(AF_INET, SOCK_RAW, IPPROTO_ICMP, NULL, 0, WSA_FLAG_OVERLAPPED);

if(sockRaw == INVALID_SOCKET) 


아래 Error 값이 자꾸 Return 됩니다.


WSAEACCES
10013

인터넷 뒤져보니, 관리자 권한으로 실행되어야만 Raw Socket 생성이 가능하다고 하네요~
(https://support.microsoft.com/ko-kr/kb/195445)

생각해보니 당연한 요구인거 같네요. RAW socket 같은 통신상에 다양한 통신 Packet을 만들수 있는 권한은 당연히 


관리자에게만 주어야 겠다고 생각듭니다.


근데, 요기(https://www.nsoftware.com/kb/xml/06170408.rst)에 보면, Registry 변경으로도 가능하다고 하네요.


HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Afd\Parameters에

DisableRawSecurity : DWORD 1 지정하면 관리자 권한 아니여도 raw socket 생성가능하다고 하네요.

물론 재부팅해야 되구요..


근데 HKEY_LOCAL_MACHINE 에 값쓰려면 관리자 권한이 있어야 하는데~ ㅠㅠ.. 한마디로


관리자 권한으로 해라는 거죠~~ ㅠㅠ


근데~ 참 웃긴게, 이게 제 개발 PC에서는 Asinvoker 인데도 error 가 않나고. Test PC에서는 이렇게 나네요~


어쨌든, Clean PC에서 않되니~ 않되는 걸로 판단~


아~~ 삽질은 언제쯤 끝날지... 


참~ 혹시 관리자 권한 일때와 아닐때의 차이점 비교해놓은거 정리해놓은 site 있으면 답글좀 부탁드려요~ㅠㅠ


니가 구글링해라~ 이러지 마시고~ 


사랑합니다~^^