SYSTEM계정에서 WSAConnect에서 10013(WSAEACCES)오류가 납니다
글쓴이: jic5760 / 작성시간: 월, 2016/05/30 - 6:34오전
WSAConnect으로 서버에 접속하는 클라이언트 프로그램을 만들었습니다.
소스는 별다른건 없고 WSASocket으로 소켓 생성 뒤 그냥 WSAConnect으로 연결합니다.
그런데 이게 일반 계정으로 실행시키면 정상적으로 작동하는데...
Service에 등록해서 SYSTEM권한으로 실행되면 WSAConnect에서 10013(WSAEACCES)오류가 뜹니다..ㅠㅠ
일반권한도 아닌 SYSTEM권한에서요!
SYSTEM권한은 제한이 없는걸로 알고있는데 왜 이럴까요?
아, 방화벽에서 해당 프로세스의 Outbound도 열어놓았구, 혹시나 해서 방화벽을 꺼봤는데도 그렇습니다..
참고로 서비스 프로그램 소스는
http://www.codeproject.com/Articles/499465/Simple-Windows-Service-in-Cplusplus
이걸 바탕으로 만들었습니다.
Forums:
구글에서 10013(WSAEACCES)로 찾아보니
참고하실만한. 비슷한 내용이 있네요. ㅇ_ㅇ;;
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
많이 찾아봤습니다만...
물론 제가 찾지 못한거겠지만
SYSTEM계정에서만 제대로 작동하지 않는 사례가 별로 없네요...
그리고 브로드케스트니 RAW소켓이라든지 이런 내용은 많은데 저는 일반적인 IPv4/Stream/TCP 통신을 사용합니다.
그냥 아무것도 없이 딱.
sock = WSASocket(PF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0);
nRst = WSAConnect(sock, (struct sockaddr*)&serveraddr, sizeof(serveraddr), NULL, NULL, NULL, NULL);
이게 답니다.
Local System 계정이 Network 접근을 할 수 없다는건 알았는데
how to grant network access to local system account
으로 검색하는데도 해결방법은 찾기가 힘드네요..
나머지는 같이 해보거나. 잘하시는분께 물어봐야 할거 같습니다.
확인해 볼만한것들을 정리해봅니다.
1. 방화벽
2. UAC 관리자 권한
3. 서비스 프로세스 실행 확인
4. 일반 프로그램에서 실행해서 확인
5. 되도록. 잘 되는 예제 프로그램을 찾아서. 실행하고 확인
MSDN. CodeProject. CodeGuru. Devpia. TCP/IP소켓 프로그래밍 관련 책. 예제소스등을 참고하시면 편합니다.
6. 소켓 초기화와 버전 확인
7. IP 와 DNS 주소와 인자값. 리턴값을 확인
네트워크 주소. 변환방식이 헛갈리거나 잘못 입력될 수 있습니다.
localhost 주소일 경우. 잘 안되는 경우도 간혹 있으니. 확인이 필요합니다.
UNICODE. MultiByte. Secure. DLL옵션과 함수 사용도 주의를 요구합니다.
정확한 내용은 직접 컴파일 해봐야 하는데. ㅇ_ㅇ;; 그것은 시간이 좀 걸리겠네요.
아니면. 원격으로 볼 수 있습니다.
----------------------------------------------------------------------------------------------------------------
말씀하시는 내용은 이 부분이 비슷한거 같습니다.
----------------------------------------------------------------------------------------------------------------
Error 10013 (WSAEACCES) is returned when a second bind to a excluded port fails in Windows
https://support.microsoft.com/en-us/kb/3039044
CreatePersistentTcpPortReservation function
https://msdn.microsoft.com/en-us/library/windows/desktop/gg696068(v=vs.85).aspx
LookupPersistentTcpPortReservation function
https://msdn.microsoft.com/en-us/library/windows/desktop/gg696072(v=vs.85).aspx
----------------------------------------------------------------------------------------------------------------
마영전 regedit 를 확인해보니 이렇게 사용하네요.
----------------------------------------------------------------------------------------------------------------
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules
TCP Query User{CCF84AE7-0566-4742-BAC5-80BB454869D2}C:\nexon\heroes\ko-kr\heroes.exe
v2.10|Action=Allow|Active=TRUE|Dir=In|Protocol=6|Profile=Private|App=E:\nexon\heroes\ko-kr\heroes.exe|Name=Mabinogi Heroes Launcher|Desc=Mabinogi Heroes Launcher|Defer=User|
UDP Query User{E1E7C945-1DB0-49FA-BD73-DE04B4C7F492}C:\nexon\heroes\ko-kr\heroes.exe
v2.10|Action=Allow|Active=TRUE|Dir=In|Protocol=17|Profile=Private|App=E:\nexon\heroes\ko-kr\heroes.exe|Name=Mabinogi Heroes Launcher|Desc=Mabinogi Heroes Launcher|Defer=User|
TCP Query User{CCF84AE7-0566-4742-BAC5-80BB454869D2}C:\nexon\heroes\ko-kr\heroes.exe
v2.10|Action=Allow|Active=TRUE|Dir=In|Protocol=6|Profile=Private|App=E:\nexon\heroes\ko-kr\heroes.exe|Name=Mabinogi Heroes Launcher|Desc=Mabinogi Heroes Launcher|Defer=User|
UDP Query User{E1E7C945-1DB0-49FA-BD73-DE04B4C7F492}C:\nexon\heroes\ko-kr\heroes.exe
v2.10|Action=Allow|Active=TRUE|Dir=In|Protocol=17|Profile=Private|App=E:\nexon\heroes\ko-kr\heroes.exe|Name=Mabinogi Heroes Launcher|Desc=Mabinogi Heroes Launcher|Defer=User|
HKEY_USERS\S-1-5-21-859279414-1173166800-2839458266-1000\Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\PropertyStore\49a5fcee_0
{0.0.0.00000000}.{4270a1b8-2984-402b-bb13-4261e745ef9a}|\Device\HarddiskVolume1\Nexon\Heroes\ko-KR\srcds.exe%b{00000000-0000-0000-0000-000000000000}
{0.0.0.00000000}.{4270a1b8-2984-402b-bb13-4261e745ef9a}|\Device\HarddiskVolume4\Nexon\Heroes\ko-KR\heroes.exe%b{00000000-0000-0000-0000-000000000000}
{0.0.0.00000000}.{10b3587e-750e-4792-9173-09f86dab9cdc}|\Device\HarddiskVolume1\Nexon\Heroes\ko-KR\heroes.exe%b{00000000-0000-0000-0000-000000000000}
{0.0.0.00000000}.{4270a1b8-2984-402b-bb13-4261e745ef9a}|\Device\HarddiskVolume4\Nexon\Heroes\ko-KR\srcds.exe%b{00000000-0000-0000-0000-000000000000}
{0.0.0.00000000}.{4270a1b8-2984-402b-bb13-4261e745ef9a}|\Device\HarddiskVolume1\Nexon\Heroes\ko-KR\heroes.exe%b{00000000-0000-0000-0000-000000000000}
HKEY_USERS\S-1-5-21-859279414-1173166800-2839458266-1000\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit
컴퓨터\HKEY_USERS\S-1-5-21-859279414-1173166800-2839458266-1000\Software\Valve\Source\heroes
----------------------------------------------------------------------------------------------------------------
다른 오류 상황을 적어 봅니다.
----------------------------------------------------------------------------------------------------------------
setsockopt function
https://msdn.microsoft.com/en-us/library/windows/desktop/ms740476(v=vs.85).aspx
Thread: bind() fails with WSAEACCES
http://cboard.cprogramming.com/tech-board/112626-bind-fails-wsaeacces.html
Winsock error 10013 WSAEACCES
I get Winsock error 10013 WSAEACCES (Permission Denied) whenever I attempt to use the ICMPPort, Ping, or Traceroute components.
https://www.nsoftware.com/kb/xml/06170408.rst
----------------------------------------------------------------------------------------------------------------
각 함수가 정의된 내용과 예제를 적어봅니다.
----------------------------------------------------------------------------------------------------------------
WSASocket function
https://msdn.microsoft.com/en-us/library/windows/desktop/ms742212(v=vs.85).aspx
WSASocket
Transport-service provider 기반의 소켓을 만들기 위해서 사용하는 함수
http://www.joinc.co.kr/w/man/4100/WSASocket
WSASocket
WSASocket 함수는 트랜스포트 서비스 프로바이더에 바인드된 소켓을 생성합니다. 부수적인 기능으로, 소켓그룹에 합쳐서(join) 생성하는데 사용하기도 합니다.
http://www.nicklib.com/library/winsock/WSASocket.html
WSAConnect function
https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms741559(v=vs.85).aspx
WSAEACCES
Attempt to connect datagram socket to broadcast address failed because setsockopt SO_BROADCAST is not enabled.
Minimum supported client - Windows 8.1, Windows Vista [desktop apps | Windows Store apps]
Minimum supported server - Windows Server 2003 [desktop apps | Windows Store apps]
Minimum supported phone - Windows Phone 8
Header - Winsock2.h
Library - Ws2_32.lib
DLL - Ws2_32.dll
WSAConnect
WSAConnect 함수는 다른 소켓 어플리케이션과 접속을 이루고, 접속 데이터를 교환하고, 매개변수로 지정되는 FLOWSPEC 구조체에 기반을 둔 필요한 서비스의 특성을 지정하는 함수 입니다.
http://www.nicklib.com/library/winsock/WSAConnect.html
WSAEACCES setsockopt 함수에서 SO_BROADCAST를 설정하지 않고, 데이터그램 소켓을 브로드캐스트 어드레스로 접속하려 하는 시도가 있었습니다.
Windows NT : 사용가능
Windows : 사용가능
Windows CE : 지원되지 않음
Header :
Win16/32 : winsock.h
Win32-II : winsock2.h
Import Library :
Win16 : winsock.lib
Win32 : wsock32.lib
Win32-II : ws2_32.lib
WSA 함수군
http://zilzu.blogspot.kr/2010/10/wsa-%ED%95%A8%EC%88%98%EA%B5%B0.html
how to use WSAConnect and WSAAccept for sending receving init Data before accept a request
http://stackoverflow.com/questions/16247621/how-to-use-wsaconnect-and-wsaaccept-for-sending-receving-init-data-before-accept
WSAConnect() vs ConnectEx()
http://stackoverflow.com/questions/36149270/wsaconnect-vs-connectex
WSAConnect
WSAConnect establishes a connection to a specified socket.
https://www.intervalzero.com/library/RTX64/HTML5/Content/PROJECTS/SDK%20Reference/WinsockRef/WSAConnect.htm
WSAConnect
The Windows Sockets WSAConnect function establishes a connection to a peer, exchanges connect data, and specifies needed quality of service based on the supplied flow specification.
http://winapi.freetechsecrets.com/sock2/SOCK2WSAConnect.htm
Thread: WSAConnect
http://forums.codeguru.com/showthread.php?106840-WSAConnect
What is the difference between connect() and WSAConnect() ?
https://groups.google.com/forum/#!topic/alt.winsock.programming/wenhXY5iIZM
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
답변감사합니다. 하지만 Socket문제는 아닙니다.
1. 방화벽 => 처음 질문글에 적었듯이 확인했습니다.
2. UAC 관리자 권한 => UAC을 사용하지 않고 Service에서 SYSTEM계정으로 실행합니다.
3. 서비스 프로세스 실행 확인 => 프로세스 자체야 잘 돌아갑니다.
4. 일반 프로그램에서 실행해서 확인 => 질문글에 적었듯이 일반 계정에서 작동시 잘 작동하는것 확인하였습니다.
5. 되도록. 잘 되는 예제 프로그램을 찾아서. 실행하고 확인 => 별다른 소스도 없습니다.
6. 소켓 초기화와 버전 확인 => 했습니다. WSAStartup도 확인하였습니다.
7. IP 와 DNS 주소와 인자값. 리턴값을 확인 => 일반 계정에서 사용시 정상작동하며 이쪽 문제는 아닙니다.
그냥 간단한 소켓 클라이언트 프로그램 만들어서
Administrator 모드 CMD에서 at명령어를 통해 작동시키면 서비스 없이 SYSTEM계정으로 실행 가능합니다. (Windows 7)
이렇게 SYSTEM모드에서 작동시켜도 안됩니다.
또한 제가 말했듯이 Socket쪽 문제는 아니며 기본적으로 Windows에서 SYSTEM권한에서의 인터넷 접속은 막혀있습니다. OS자체에서요.
이걸 해결하려고 합니다.
그런데 또 특이한 점은 psexec -s 명령을 통해 SYSTEM권한으로 작동시키면 인터넷 통신이 잘 됩니다...
ProcessExplorer으로 psexec을 통한 방법과 바로 실행한것의 차이를 살펴보고 있는데 privileges쪽이 의심스럽네요...
RequiredPrivilege때문이네요...
이걸 지워버리니까 됩니다..ㅠㅠ
다행이네요. 엉터리지만. 제가 찾은 남은 내용들도 적어봅니다.
- 포트에 범위 확인
- CreateService() 에 권한과 인자값 확인
- 윈도우 서비스 생성 및 등록 확인
- Gpresult /V
- TCP Query User 에 권한 확인
- 관리자 권한과 계정 및 그룹에 대한 예외처리 확인
- 임시로. 프로세스를 별도로 만들어서 실행
- 실행 파일 - 속성 - 관리자 권한'으로 실행'을 체크
- 보안 - 폴더 접근 권한 포함.
---------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
TCP Query User{CCF84AE7-0566-4742-BAC5-80BB454869D2}C:\nexon\heroes\ko-kr\heroes.exe
v2.10|Action=Allow|Active=TRUE|Dir=In|Protocol=6|Profile=Private|App=E:\nexon\heroes\ko-kr\heroes.exe|Name=Mabinogi Heroes Launcher|Desc=Mabinogi Heroes Launcher|Defer=User|
Action=Allow
Dir=In
Profile=Private
Defer=User
---------------------------------------------------------------------------------------------------------
? (49,152에서 65,535) 기본 동적 포트 범위에 포함되지 않은 포트를 사용하고 netsh 명령을 실행하여 제외 된 포트와 포트를 지정하지 마십시오.
---------------------------------------------------------------------------------------------------------
Error 10013 (WSAEACCES) is returned when a second bind to a excluded port fails in Windows
https://support.microsoft.com/en-us/kb/3039044
netsh int ipv4 add excludedportrange protocol = tcp startport = Integer numberofports = 1
---------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
[참고] PSEXEC 사용법
http://dreambyul.tistory.com/44
psexec -s
pstool[psexec.exe]를 이용한 원격접속
http://blog.naver.com/85inmin/220687875384
PsExec 툴 테스트
http://egloos.zum.com/totoriver/v/3145028
Psexec.exe사용하여 원격에서 명령어 실행하기.
http://blog.naver.com/onps/110045951711
[PowerShell] PsExec 2008 R2 액세스가 거부되었습니다 Access Denied
http://cafe.naver.com/zzzzzzero/155
Psexec “run as (remote) admin”
http://www.codeproject.com/Questions/80676/Psexec-run-as-remote-admin
Psexec or WMI
http://www.codeproject.com/Questions/76700/Psexec-or-WMI
http://www.scoop.it/t/fixupdateerror
Redirect output of process started locally with PSExec
http://superuser.com/questions/649550/redirect-output-of-process-started-locally-with-psexec
PsExec Access is denied
http://superuser.com/questions/540380/psexec-access-is-denied
Unfortunately this gives me "Couldn't install PSExec service access is denied" ? Tuim Jan 28 '13 at 10:39
Are you also running the initial command from an elevated command prompt, or are you using it as a local run-as? ? nhinkle? Jan 28 '13 at 11:02
The original command runs a 'user' security context. I can not use run-as for specific reasons. ? Tuim Jan 28 '13 at 11:20
불행하게도이 날 "psexec에 서비스 액세스를 설치할 수 없습니다 거부"제공 - Tuim 1월 28일 '13을 10시 39분에서
당신은 또한 상승 된 권한의 명령 프롬프트에서 초기 명령을 실행하거나 로컬 실행 등으로 사용하고 있습니까? - 11시 2분에서 nhinkle의 ? 1월 28일 '13
원래 명령은 '사용자의 보안 컨텍스트를 실행합니다. 나는 실행-로 사용할 수없는 특정 이유. - 11시 20분에서 Tuim 1월 28일 '13
---------------------------------------------------------------------------------------------------------
기타
---------------------------------------------------------------------------------------------------------
Outlook 2010 - UDP/TCP query users firewall blocked
https://social.technet.microsoft.com/Forums/office/en-US/667a8e90-7dd2-45ca-8d89-f79619b4c918/outlook-2010-udptcp-query-users-firewall-blocked?forum=outlook
gpresult group membership incorrect
http://superuser.com/questions/1078878/gpresult-group-membership-incorrect
[WSUS] 일부 WSUS Client가 WSUS콘솔에서 보이지 않는 문제
http://blog.naver.com/onps/110043108498
[VISTA] 시스템 재시작 이후 사용자 계정이 관리자계정에서 Guest계정으로 변경시 복구방법
http://blog.naver.com/onps/110043070520
윈도방화벽 설정 http://support.microsoft.com/kb/875357/ko 컴인터넷+아웃푹
http://blog.naver.com/csooki/110008825933
Terminal Server Commands: QUERY
https://support.microsoft.com/en-us/kb/186592
C:\Users\신우섭>query session /server:ACCTG
세션 이름 가져오기 오류 1722
오류 [1722]:RPC 서버를 사용할 수 없습니다.
When do DNS queries use TCP instead of UDP? [duplicate]
http://serverfault.com/questions/404840/when-do-dns-queries-use-tcp-instead-of-udp
Firewall Exceptions not working
http://www.itninja.com/question/firewall-exceptions-not-working
Adding an Application
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366421%28v=vs.85%29.aspx
Add exception in firewall
http://community.spiceworks.com/scripts/show/1336-add-exception-in-firewall
---------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
[A] Win 7 antivirus 2012
http://www.techspot.com/community/topics/a-win-7-antivirus-2012.174566/page-2
Internet Services
?Windows Firewall
?System Restore
TCP/IP Network Programming Design Patterns in C++
http://vichargrave.com/network-programming-design-patterns-in-c/
Programming Windows TCP Sockets in C++ for the Beginner
http://www.codeproject.com/Articles/13071/Programming-Windows-TCP-Sockets-in-C-for-the-Begin
---------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
A Windows Service Application
http://www.codeproject.com/Articles/16488/A-Windows-Service-Application
SC_HANDLE schService = CreateService(
schSCManager, /* SCManager database */
pName, /* name of service */
pName, /* service name to display */
SERVICE_ALL_ACCESS, /* desired access */
SERVICE_WIN32_OWN_PROCESS|
SERVICE_INTERACTIVE_PROCESS , /* service type */
SERVICE_AUTO_START, /* start type */
SERVICE_ERROR_NORMAL, /* error control type */
pPath, /* service's binary */
NULL, /* no load ordering group */
NULL, /* no tag identifier */
NULL, /* no dependencies */
NULL, /* LocalSystem account */
NULL ); /* no password */
A basic Windows service in C++ (CppWindowsService)
https://code.msdn.microsoft.com/windowsapps/CppWindowsService-cacf4948
방법: Windows 서비스 만들기(C++ 프로그래밍)
https://msdn.microsoft.com/ko-kr/library/40xe80wx(v=vs.90).aspx
How to: Create Windows Services (C++ Programming)
https://msdn.microsoft.com/en-us/library/40xe80wx(v=vs.80).aspx
Any examples of creating a windows service in C/C++ ? (No GUI)
http://stackoverflow.com/questions/8014382/any-examples-of-creating-a-windows-service-in-c-c-no-gui
Asynchronous Socket Communications Using the .NET Framework
http://www.codeproject.com/Articles/4904/Asynchronous-Socket-Communications-Using-the-NET-F
Simple Windows Service Sample
http://www.codeproject.com/Articles/3990/Simple-Windows-Service-Sample
Service Controller
http://www.codeproject.com/Articles/11810/Service-Controller
SMS Service
http://www.codeproject.com/Articles/22090/SMS-Service
WCF Service Library with Windows Service Hosting
http://www.codeproject.com/Articles/38160/WCF-Service-Library-with-Windows-Service-Hosting
MFS Service Manger
http://www.codeproject.com/Articles/7740/MFS-Service-Manger
Install a Service using a Script
http://www.codeproject.com/Articles/8475/Install-a-Service-using-a-Script
About Windows Services
http://www.codeproject.com/Articles/1573/About-Windows-Services
Creating a simple Windows Service
http://www.codeproject.com/Articles/106742/Creating-a-simple-Windows-Service
Windows Services in Action I
http://www.codeproject.com/Articles/22468/Windows-Services-in-Action-I
Install Windows Service
http://www.codeproject.com/Tips/52471/Install-Windows-Service
Windows Service Test Form
http://www.codeproject.com/Articles/14681/Windows-Service-Test-Form
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
감사합니다!
감사합니다!
댓글 달기