애드소프트 기술블로그

개발·서버 운영 실무 기록

애드소프트 박재호입니다. IIS·ASP.NET 웹 서비스와 메일서버를 직접 운영하고, Unity 게임과 데스크톱 앱을 만들며 겪은 문제와 해결 과정을 기록합니다.

최신 글

dllhost.exe(COM Surrogate)는 무엇인가 — /Processid 의 ID 로 정체 찾기, 썸네일과 오른쪽 클릭 메뉴

작업 관리자의 COM Surrogate 는 dllhost.exe 다. 내 PC 에서 10개가 떠 있었고, 명령줄의 /Processid:{...} 를 레지스트리에서 찾아보니 WSL 파일 공유, 압축 프로그램·OneDrive·메모장의 오른쪽 클릭 메뉴 같은 것들이었다. DLL 을 대신 실행해 주는 구조와 썸네일·코덱 문제, 정체를 찾는 명령을 정리했다.

conhost.exe(콘솔 창 호스트)가 수십 개인 이유 — 콘솔 프로그램마다 하나, 부모로 찾기와 가짜 구별

작업 관리자 세부 정보 탭에 conhost.exe 가 49개 떠 있었다. 모두 System32 의 같은 파일이고 Microsoft 서명이 유효했다. 콘솔 프로그램 하나마다 하나씩 붙는 구조, --headless 로 뜨는 의사 콘솔, Windows Terminal 과의 관계, 부모 프로세스로 누가 띄웠는지 찾는 법과 가짜를 구별하는 기준을 정리했다.

msedgewebview2.exe 가 여러 개인 이유 — WebView2 런타임, 어떤 앱이 띄웠는지 찾는 법

Edge 를 열지 않았는데 작업 관리자에 msedgewebview2.exe 가 18개 떠 있었다. Windows 검색, 위젯, 카카오톡이 각각 여섯 개씩 띄운 WebView2 런타임이었다. 명령줄의 --embedded-browser-webview 와 --webview-exe-name 으로 어떤 앱이 띄웠는지 찾는 법, 한 앱에 여섯 개가 붙는 구조, 지우면 안 되는 이유를 정리했다.

Antimalware Service Executable(MsMpEng.exe) CPU·메모리 — 끄지 말고 검사 시간과 제외 항목으로

작업 관리자의 Antimalware Service Executable 은 Microsoft Defender 바이러스 백신의 엔진 MsMpEng.exe 다. 실제 PC 에서 메모리 377MB, 평소 CPU 1% 미만, 새벽 2시 45분의 2분 16초짜리 빠른 검사 기록을 확인했다. CPU 를 먹는 때가 언제인지, 끄지 않고 검사 시간과 제외 항목으로 다루는 법과 제외 항목의 위험을 정리했다.

svchost.exe 가 100개 넘게 떠 있는 이유 — 서비스 호스트, 어떤 서비스인지 찾는 법

작업 관리자의 세부 정보 탭에 svchost.exe 가 101개 있었다. 모두 System32 의 같은 파일이고 Microsoft 서명이 유효했다. 서비스 호스트가 무엇인지, 메모리 3.5GB 를 넘는 PC 에서 서비스가 하나씩 따로 뜨는 이유, tasklist /svc 로 어떤 서비스인지 찾는 법과 CPU 를 먹는 svchost 의 범인을 찾는 순서를 정리했다.

에어코리아 미세먼지 등급과 대기질 예보 API — 1시간·24시간 등급, informGrade 파싱 (C# 예제)

같은 날 서울 미세먼지 예보가 05시엔 좋음, 17시엔 보통이었다. 에어코리아 대기질 예보는 하루 네 번 발표되고 한 번 조회에 모두 섞여 온다. 1시간 등급과 24시간 등급 중 무엇을 보여 줄지, '서울 : 보통,제주 : 좋음' 문자열을 시·도에 맞추는 법, 경기·강원처럼 권역이 둘로 나뉜 곳, 출처와 변경금지 조건을 지키며 화면에 붙이는 방법까지 정리했다.

에어코리아 미세먼지 API — 가까운 측정소 찾기와 실시간 PM10·PM2.5 읽기 (C# 예제)

서울시청에서 가장 가까운 측정소 세 곳 중 두 곳이 도로변 측정소였다. 에어코리아 실시간 대기오염 API 를 붙이며 확인한 것들 — 위도가 dmX 에 들어 있는 측정소 목록, 도시대기 측정소만 고르는 이유, ver=1.3 을 빼면 사라지는 PM2.5, '2026-10-26 24:00' 이라는 시각, '-' 와 통신장애까지 C# 코드로 정리했다.

기상청 초단기예보와 체감온도 계산 — 날씨로 메뉴 추천하기 (C# BackgroundService)

기온 12℃ 는 쌀쌀한가? 숫자 하나로는 답이 안 나왔다. 앞으로 6시간을 주는 초단기예보를 단기예보 위에 겹치고, 끼니 시간의 기온과 바람으로 기상청 체감온도를 계산하고, 어제와 비교하고, 계절까지 보정해서 식단서랍이 '국물이 당기는 날'을 고르는 방식을 정리했다. 요청마다 기상청을 부르지 않는 백그라운드 갱신 구조도 함께.

기상청 격자 좌표 nx, ny 변환 — 위경도 C# 코드와 단기예보 응답 파싱

기상청 단기예보는 위도·경도가 아니라 5km 격자 번호 nx, ny 로 묻는다. 활용가이드의 람베르트 정각원추 변환식을 C# 으로 옮겨 시·도 대표 지점으로 검증하고, 사용자 위치를 받지 않기로 한 이유, 944줄짜리 세로 목록을 시각별 날씨로 펼치며 만난 '강수없음'·'1mm 미만' 같은 값까지 정리했다.

기상청 단기예보 API 첫 호출 — 서비스 키 403, base_time, resultCode 정리 (C# 예제)

활용 신청을 마친 키로 기상청 단기예보를 불렀더니 403 SERVICE_KEY_IS_NOT_REGISTERED_ERROR 가 돌아왔다. 키는 맞았고, 한 번 더 인코딩한 것이 문제였다. 서비스 키 인코딩, 발표 시각 base_time 고르기, HTTP 200 안에 숨어 오는 resultCode 10·03 까지, 식단서랍에 날씨를 붙이며 확인한 것들을 C# 코드로 정리했다.