본문 바로가기

윈도우32

윈도우11 ] 파일탐색기 우클릭시 추가옵션표시 없애기 '추가 옵션 표시' 없이 윈도우10처럼 모든 옵션을 표시하는 법        관리자 모드로 명령프롬프트 실행하여 다음 명령어 입력 후 재부팅하면 모든 옵션이 바로 표시된다.reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve     만약 다시 원래 윈도우11의 표시방식으로 돌아가고 싶다면 아래 명령을 입력하면 된다.reg delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f 2024. 6. 15.
윈도우 11 ] 한글 입력 도중 마지막 문자 지워지는 문제 해결 방법 Win + I 키로 윈도우 설정 켬 > 시간 및 언어  언어 및 지역     언어 > 한국어 > ... > 언어 옵션     키보드 > Microsoft 입력기 > ... > 키보드 옵션      호환성 > 이전 버전의 Microsoft IME > 켬 2024. 5. 16.
Windows 명령 프롬프트에서 리다이렉션과 파이프 사용 리다이렉션 리다이렉션이란 표준입력과 표준출력의 방향을 키보드와 모니터가 아닌 다른곳으로 바꾸어주는 것을 말한다. 주로 명령어의 출력을 터미널 창이 아닌 파일로 보내거나, 파일의 내용을 명령어의 입력으로 사용할 때 쓰인다. 기본적인 리다이렉션 심볼에는 (출력 리다이렉션), >> (출력을 파일에 추가)가 있다. sort명령어를 사용해 직접 테스트해보자. 윈도우의 sort 명령은 텍스트를 행단위로 정렬할 때 사용하는 명령어이다. 다음과 같은 테스트 파일을 만든다. beforeSort.txt 123 456 789 123 456 789 - 입력 리다이렉션 sort < beforeSort.txt beforeSort.txt 파일의 내용을 sort 명령어의 입력으로 사용한다. 즉, 파일을 .. 2024. 4. 4.
nssm 사용해서 배치파일을 Windows 서비스로 등록하기 nssm 다운로드 후 압축 해제 https://nssm.cc/download NSSM - the Non-Sucking Service Manager NSSM - the Non-Sucking Service Manager Windows 10, Server 2016 and newer 2017-04-26: Users of Windows 10 Creators Update or newer should use prelease build 2.24-101 or any newer build to avoid an issue with services failing to start. If for some reason you nssm.cc 관리자 권한으로 명령 프롬프트 실행한 뒤 다운로드 받은 nssm.exe 파일이 있는 경로로 .. 2023. 12. 27.
Windows 작업 스케줄러 사용하여 배치파일 자동 실행하기 Windows 작업 스케줄러 사용하여 배치파일 자동 실행하기 작업 만들기 작업 '이름'을 지정하고 '설명'을 추가한다. '사용자의 로그온 여부에 관계없이 실행'에 체크하고 암호를 사용하지 않는다. 권한문제로 실행되지 않을 경우를 대비하여 '가장 높은 수준의 권한으로 실행'에 체크한다. '숨김'에 체크를 하면 배치파일의 콘솔창을 숨긴채 실행할 수 있다. 트리거는 '시스템 시작 시'로 하였다. 동작은 '프로그램 시작'으로 하고 배치파일의 경로를 등록한다. 기타 옵션은 '조건', '설정' 탭에서 설정할 수 있다. 시스템 재시작 후 작업 스케줄러의 작업 목록에서 '마지막 실행 시간'과 '마지막 실행 결과'를 확인할 수 있다. 2023. 12. 26.
윈도우 소켓 ] blocking / non-blocking 소켓 사용 시 소켓함수의 리턴 조건 recv() Blocking socket : 수신된 데이터가 없으면 블록되고, MSG_WAITALL 플래그를 사용하면 원하는 크기만큼 도착할 때까지 기다릴 수 있다. Non-blocking socket : 수신된 데이터가 없으면 WSAEWOULDBLOCK으로 즉시 리턴한다. WSAGetLastError() 함수를 사용하여 에러 코드를 확인할 수 있다. TCP / UDP 비교 : 동일하게 Blocking socket에서는 소켓 수신 버퍼에 도착한 데이터가 없으면 블록되고, 소켓 수신 버퍼에 도착한 데이터가 있을 시 이를 응용 프로그램이 제공한 버퍼에 복사한 뒤 리턴한다. send() Blocking socket : 소켓 송신 퍼버에 여유 공간이 없으면 블록되고, 응용 프로그램이 전송 요청한 데이터를 소켓 .. 2023. 12. 24.
Win32 API ] 윈도우 프로그램의 기본 구조 MFC 프레임워크 안에 숨겨진 윈도우 프로그램의 기본 구조를 이해해보자. Windows에서 실행되는 애플리케이션의 종류 윈도우에서 실행되는 애플리케이션은 크게 콘솔 애플리케이션과 GUI 애플리케이션으로 나눌 수 있다. 콘솔 앱 또는 데스크톱 애플리케이션 만들기 프로젝트 생성 시 콘솔 또는 데스크톱 애플리케이션을 지정하여 생성할 수 있으며, 이미 생성한 프로젝트를 콘솔 또는 GUI 애플리케이션으로 변경하려면 프로젝트 우클릭 - 속성 - 링커 - 시스템 - 하위 시스템에서 변경 가능하다. Windows C/C++ 애플리케이션의 진입점 프로그램이 실행될 때 가장 먼저 호출되는 함수를 프로그램의 진입점(entry point)라고 하고, 이 진입점을 호출하는 함수는 C/C++ 런타임(CRT) 초기화를 담당하는 함.. 2023. 12. 13.
C/C++ ] 윈도우 콘솔 프로그램 아이콘 변경하기 + 무료 아이콘 찾기 콘솔 프로그램의 기본 아이콘을 변경해보자.      IconFinder 등의 사이트에서 무료 상업용 아이콘 파일을 찾는다. https://www.iconfinder.com/search?q=smile&price=free&license=gte__1 Icons - IconfinderDownload 7,594,057 icons. Available in PNG and SVG formats. Ready to be used in web design, mobile apps and presentations.www.iconfinder.com     Free icon 중에서도 Free for commercial use라고 되어있는 것을 찾는다.     ICO 파일이 아니라 PNG 파일로 다운받는데 128 px 이상으로 받는.. 2023. 12. 9.
윈도우 소켓 ] select 입출력 모델 select 모델 select() 함수는 동기식 다중 입출력함수(Synchronous Multiplexing IO)로 recv(), send() 등 소켓 함수 호출이 성공할 수 있는 시점을 미리 알 수 있다. 따라서 소켓 함수 호출 시 조건을 만족하지 않아 생기는 여러 문제를 해결할 수 있다. 또한 멀티스레드 방식 등 다른 모델과 비교하여 select 모델의 사용상의 장점은 여러 소켓을 한 스레드로 처리할 수 있다는 점이다.     select 모델 사용 준비 select() 모델을 사용하려면 세 종류의 소켓 셋을 준비해야 한다. 읽기셋, 쓰기셋, 예외셋이 있는데 세 종류중에 필요한 소켓셋만 준비해도 된다. 소켓 셋은 소켓의 집합으로 종류에 따라 소켓들을 담아두는 역할을 한다. 예를 들어 어떤 소켓에 대.. 2023. 11. 26.
Windows 10 ] 네트워크 브리지 설정 네트워크 브리지 네트워크 브리지(Network Bridge) 기능은 두 개 이상의 네트워크 어댑터(랜카드)를 결합하여 하나의 논리적 네트워크로 통합하는 기능을 제공한다. 브리지된 네트워크에서는 모든 연결된 장치가 동일한 IP 서브넷 내에 있으므로, 하나의 IP 주소를 할당받고 통신한다. 또한 네트워크 브리지를 설정하여 두 랜카드가 하나의 논리적 네트워크로 결합했을 때, IP 주소는 하나지만 물리적인 랜포트는 여전히 두 개가 존재하므로 두 랜포트를 각각 다른 장치에 연결하여 독립적으로 각기 다른 통신을 할 수 있다. 네트워크 브리지 연결 방법 제어판 - 네트워크 및 인터넷 - 네트워크 연결 네트워크 브리지 설정할 이더넷 인스턴스를 드래그 하여 선택 후 우클릭 - 네트워크 브리지 연결을 선택하거나 하나씩 선.. 2023. 11. 22.
Windows ] 원격 데스크톱 연결 시 파일 전송하기 원격 데스크톱 연결에서 옵션 표시 클릭 로컬 리소스 - 로컬 장치 및 리소소스 - 자세히... 클릭 드라이브 - 연결할 드라이브 체크 이렇게 설정한뒤 원격 데스크톱 연결한다. 원격지 Host PC의 파일 탐색기 - 내 PC에 접근하면 Guest PC의 드라이브에 접근할 수 있다. 이후 파일 복사 붙여넣기를 통해 서로 전송하면 된다. 2023. 11. 17.
Win32 API ] 메시지 루프 C언어를 처음 배우고 콘솔환경에서 프로그래밍을 하다가 윈도우 프로그래밍을 시작하면 어디가 프로그램의 시작점이고 어디서부터 순차적으로 명령이 실행되는 것인지 알지 못해 당황하는 경우가 적지 않다. 콘솔과 달리 윈도우 환경에서는 사용자가 발생시키는 이벤트에 대한 메시지를 처리하는 방식으로 프로그램이 수행되고 이를 메시지 기반(또는 이벤트 기반) 프로그래밍이라고 한다. 메시지란? 사용자나 시스템에 의해 발생된 일체의 변화에 대한 정보를 말한다. ex. 마우스 왼쪽 버튼 클릭, 키보드 누름, 윈도우 최소화 등 이런 이벤트가 발생하면 윈도우 시스템에 존재하는 메시지큐에 메시지가 쌓이고, 애플리케이션에서는 윈도우시스템 메시지큐에서 메시지를 가져와서 특정 메시지 발생시 어떠한 일을 수행할 것인가에 대한 처리 루틴을 .. 2023. 11. 13.
윈도우에서 문자열 표현 형식, LPSTR, LPCSTR, LPWSTR, LPCWSTR, LPTSRT, LPCTSTR 윈도우에서는 문자열 처리를 위해 char*, wchar_t*, TCHAR*를 쓰기보다 다음과 같은 표현을 사용하고 있다. LP : Long Pointer의 약자 C : const의 약자 STR : string의 약자로 null terminated 된 캐릭터 배열을 의미한다. W : wide char의 약자로 유니코드를 의미한다. T : TCHAR의 약자로 프리컴파일 옵션에 따라 유니코드 문자(wchar_t) 또는 ANSI 문자(char)로 형변환되는 자료형을 의미한다. LPSTR : char* LPCSTR : const char* LPWSTR : wchar_t* LPCWSTR: const wchar_t* LPTSTR : TCHAR* LPCTSTR : const TCHAR* 2023. 11. 3.
고해상도 타이머 QueryPerformanceFrequency, QueryPerformanceCounter 윈도우 운영체제에서 시스템의 경과 시간을 측정하는 데 사용되는 함수로 GetTickCount()와 GetTickCount64()가 있다. 이 함수는 시스템 부팅 이후 경과한 밀리초(ms)단위의 시간을 반환하며 주로 시간 간격을 측정하는 데 사용된다. GetTickCount() 함수는 32비트 부호없는 정수 타입으로 시간을 반환하며, 시스템이 부팅된 이후 49.7일이 지나면 오버플로우가 발생되므로 64비트 부호없는 정수로 시간을 반환하는 GetTickCount64()를 대신 사용하는 것이 권장된다. 다만 이 함수의 해상도는 일반적으로 10밀리초에서 16밀리초 범위의 시스템 타이머의 해상도로 제한되기 때문에, 조금더 고해상도 타이머가 필요하다면 QueryPerformanceFrequency(), QueryP.. 2023. 10. 9.
윈도우 소켓 ] 논블로킹 소켓, ioctlsocket, 소켓 함수의 리턴 조건과 WSAEWOULDBLOCK이 리턴되는 상황 socket() 함수로 생성된 소켓은 기본적으로 블로킹 소켓이다. 그리고 블로킹 소켓은 소켓함수 호출 시 조건을 만족할 때까지 리턴하지 않는다. 주요 소켓 함수별 리턴 조건은 다음과 같다. accpet() : 접속한 클라이언트가 있을때 connect() : 서버에 접속 성공했을 때 send() : 응용 프로그램이 전송 요청한 데이터를 소켓 송신 버퍼에 모두 복사했을 때 recv() : 소켓 수신 버퍼에 도착한 데이터를 응용 프로그램이 제공한 버퍼에 복사했을 때 반면 논블로킹 소켓은 소켓함수 호출 시 조건을 만족하지 않아도 함수가 리턴하고 다음 코드가 수행된다. socket()으로 생성된 소켓을 논블로킹 소켓으로 소켓 모드를 변경하는 방법은 다음과 같다. u_long on = 1; if (ioctlsock.. 2023. 10. 2.
윈도우 소켓 ] 소켓 옵션, setsockopt, getsockopt, SOL_SOCKET 옵션들 setsockopt setsockopt 함수는 소켓 옵션을 설정하는 데 사용된다. int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); sockfd : 옵션을 설정할 대상이 되는 소켓을 식별하는 데 사용되는 소켓 디스크립터로, 소켓을 생성하고 열 때 반환되는 정수값이다. level: 설정하려는 옵션이 어느 레벨에 속하는지 지정한다. 주로 SOL_SOCKET 레벨을 사용하고, 특정 프로토콜 레벨 옵션인 경우, IPPROTO_IP, IPPROTO_IPV6, IPPROTO_TCP 등을 사용할 수 있다. optname: 설정하려는 옵션의 이름을 지정한다. 예를 들어, SO_BROADCAST, SO_KEEP.. 2023. 10. 1.
윈도우 소켓 ] connect 비동기로 처리하기 논블로킹 소켓으로 설정한 뒤 connect를 시도한다. connect 함수의 리턴값이 SOCKET_ERROR인 경우, WSAGetLastError()로 오류를 확인하여 WSAEWOULDBLOCK 인 경우 현재 백그라운드에서 연결이 진행중임을 나타낸다. writeSet에 소켓을 넣고 select 함수를 호출하여 타임아웃 시간 동안 write-ready 상태가 되는지 감지한다. select() 함수는 오류가 발생한 경우 -1, 타임아웃인 경우 0 그리고 이벤트를 감지한 경우 감지한 소켓 수를 리턴한다. // 논블로킹 모드로 설정 u_long nonBlockOpt = 1; if (ioctlsocket(cSocket, FIONBIO, &nonBlockOpt) == SOCKET_ERROR) { OutputDebu.. 2023. 9. 30.
C++ ] 레지스트리 등록하여 윈도우 시작시 앱 자동 실행 하기 레지스트리 등록하여 윈도우 시작시 앱 자동 실행 하기 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER를 사용하면 현재 로그인한 사용자의 시작 프로그램으로 등록하고, HKEY_LOCAL_MACHINE을 사용하면 모든 사용자에게 적용된다. 위 경로에서 "새 문자열 값"을 선택하고 값 이름은 프로그램을 식별할 만한 이름으로 지정하고, 값 데이터에는 실행할 프로그램의 경로를 입력하면 윈도우 부팅 시 등록한 프로그램이 자동실행된다. // 실행파일의 경로 알아내기 wchar_t exePath[MAX_PA.. 2023. 9. 22.
윈도우10 탐색기에서 최근에 사용한 파일 / 폴더 목록 지우기 탐색기 - 옵션 - '폴더 및 검색 옵션 변경' '최근에 사용된 파일 / 폴더 표시' 체크 해제 후 지우기 클릭 2023. 7. 11.
Windows ] TFTP Client 기능 켜기 제어판 - Windows 기능 켜기/끄기 - TFTP 클라이언트 체크 명령 프롬프트에서 tftp 명령어를 통해 사용 가능하다. 바이너리 파일을 송신하는 경우엔 -i 옵션을 써야 whole 파일이 문제없이 전송이 되었다. 2023. 7. 11.
인터넷 익스플로러 엣지로 자동전환 안되게 하는 법 아래 경로로 이동한다. C:\Program Files (x86)\Microsoft\Edge\Application\112.0.1722.39[버전]\BHO 폴더 안에 다음과 같은 파일이 있는데 IE에서 Edge로 자동전환하게 하는 프로그램이다. 삭제하는 것은 찜찜하니 다음과 같이 폴더명을 바꿔주면 된다. 2023. 4. 13.
Git, Windows ] push / pull 자동화 배치파일 만들기 다음과 같이 윈도우 배치파일을 만든다. push.bat git add * git commit -m "Auto push %date% %time%" git push origin main pause 배치파일에서 현재 날짜과 시간을 출력하기 위해 %date%, %time%을 쓸 수 있다. pull.bat git pull origin main pause 배치파일을 .git 과 같은 폴더에 넣어둔 두면 단순 클릭으로 push, pull을 할 수 있다. 배치파일 안의 깃 명령어는 얼마든지 수정 가능하다. 이렇게 만든 배치파일을 윈도우 작업 스케줄러에 등록하여 자동으로 실행되도록 할 수도 있다. 윈도우 배치파일 만드는 법 : https://eteo.tistory.com/373 윈도우 배치파일(.bat) 만들기 (레지스.. 2023. 2. 1.
윈도우 소켓 ] TCP 에코 서버, 클라이언트 및 동작원리 TCP 서버의 함수 호출 순서 TCP 서버에서 listen 함수호출을 통해 연결요청 대기상태에 들어가면 클라이언트가 connect() 함수호출을 통해서 연결요청을 할 수 있다. int listen(SOCKET s, int backlog); s : 연결요청 대기상태에 두고자 하는 소켓 전달. 이 함수 인자로 전달된 소켓이 서버 소켓(리스닝 소켓)이 된다. backlog : 연결요청 대기 큐의 크기정보 전달, ex. 5가 전달되면 클라이언트의 연결요청을 5개까지 대기시킬 수 있다. 적절한 값은 실험적 결과에 의존해 결정하면 되고 일반적으로 웹서버와 같이 잦은 연결요청을 받는 서버의 경우 15 이상을 전달한다. listen 함수 호출이후 클라이언트의 연결요청이 들어왔다면, 들어온 순서대로 연결요청을 수락하고 .. 2023. 1. 1.
윈도우 소켓 ] UDP 서버, 클라이언트 📝 UDP 소켓과 TCP 소켓의 차이점 TCP 소켓 (연결지향형 SOCK_STREAM) 중간에 데이터가 소멸되지 않는다. 전송 순서대로 데이터가 수신된다. 데이터의 경계가 존재하지 않는다. 소켓 대 소켓의 연결은 반드시 1 대1의 구조이다. UDP 소켓 (비 연결지향형 SOCK_DGRAM) Flow Control 이 없다. 그러므로 SEQ, ACK 같은 메시지 전달을 하지 않는다. 연결의 설정과 해제의 과정이 존재하지 않는다. 데이터 분실 및 파손의 위험이 존재한다. 데이터 전송이 빠름 한번에 전송할 수 있는 데이터의 크기가 제한된다. 서버소켓과 클라이언트의 소켓 구분이 없이 하나의 소켓으로 둘 이상의 노드와 데이터 송수신이 가능하다. UDP 송수신 함수 #include int sendto(SOCKET .. 2022. 12. 27.
Windows 10 ] 윈도우 시작 프로그램으로 등록하기 바로가기를 만들어 아래 경로에 가져다 둔다. 개별 사용자용 : C:\Users\Users\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 전체 사용자용 : C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 혹은 레지스트리에 등록하는 방법 Window 키 + R, regedit 입력 후 확인 개별 사용자용 : HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 전체 사용자용 : HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 해당 경로로 먼저 이동한다. 오른.. 2022. 11. 3.
WSL2 설치하기 (Windows Subsystem for Linux) https://learn.microsoft.com/ko-kr/windows/wsl/install-manual 이전 버전 WSL의 수동 설치 단계 wsl install 명령을 사용하지 않고 이전 버전의 Windows에 WSL을 수동으로 설치하는 방법에 대한 단계별 지침입니다. learn.microsoft.com 1. PowerShell을 관리자 권한(시작 메뉴 > PowerShell >에서 관리자 권한으로 실행 >을 마우스 오른쪽 단추로 클릭)으로 열고 다음 명령을 입력한다. dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 2. Windows 10 x64 시스템의 경우 버전 1903 .. 2022. 10. 1.
윈도우에서 리눅스 개발환경 구축하기 WSL2 + VSCode 먼저 윈도우 PC에 WSL이 깔려있어야 한다. WSL 설치는 공식 문서에서 자세하게 설명하고 있다. https://learn.microsoft.com/en-us/windows/wsl/install Install WSL Install Windows Subsystem for Linux with the command, wsl --install. Use a Bash terminal on your Windows machine run by your preferred Linux distribution - Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine, and more are available. learn.microsoft.com VSCode 에서 WSL extension.. 2022. 9. 30.
Windows ] 방화벽 포트 열기 윈도우10에서 방화벽 포트 열기 2022. 9. 25.
MFC ] 윈도우 크기 조절 또는 고정하기, 최소/최대 사이즈 지정 1. WM_GETMINMAXINFO 메시지 처리기 함수를 추가한다. 속성 - 메시지 - WM_GETMINMAXINFO 를 찾아서 Add 혹은 프로젝트 - 클래스 마법사 2. OnGetMinMaxInfo 함수 안에서 전달된 파라미러 lpMMI를 사용해 창의 min / max 값을 설정한다. void CdeltaControlDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI) { //lpMMI->ptMinTrackSize.x = 1200; //lpMMI->ptMinTrackSize.y = 800; lpMMI->ptMinTrackSize = CPoint(1200, 800); lpMMI->ptMaxTrackSize = CPoint(1400, 1000); CDialogEx::OnGetMinMax.. 2022. 8. 28.
C ] Windows 에서 PThread 사용하기 (Visual Studio 사용) PThread (Posix Thread)는 유닉스계열의 표준 스레드 라이브러리로 비록 유닉스 계열 라이브러리지만 win32에서도 사용할 수 있는 방법이 있다. 1. 아래 홈페이지 가서 라이브러리를 다운 받는다. https://www.sourceware.org/pthreads-win32/ POSIX Threads (pthreads) for Win32 Open SourcePOSIX Threads for Win32 Current release: 2.9.1 (2012-05-27)See the ANNOUNCEMENT and NEWS for details.Pthreads-w32 release 1.11.0 (2005-06-04) was the last series 1.x.x version! (Version 1.11... 2022. 8. 24.