“Windows 개발” 태그의 글
“Windows 개발” 태그가 붙은 글 92건을 최신순으로 정리했습니다.
-
빠른 시작의 정체 ── Windows의 「종료」가 다시 시작과 다른 이유
Windows의 「종료」는 기본적으로 하이브리드 종료가 되어 커널과 드라이버가 최대 절전 모드 파일에 저장되고 다음 부팅에서 복원됩니다. 다시 시작해야만 해결되는 이유, 가동 시간·업데이트·Wake on LAN에 미치는 영향, 확인 방법과 비활성화 판단을 설명합니다.
-
Time Travel Debugging ── 장기 가동에서 재현되지 않는 결함을 「녹화」해서 되감기
한 달에 한 번만 나오는 결함은 크래시 덤프로는 결과밖에 찍히지 않습니다. WinDbg의 Time Travel Debugging(TTD)으로 실행을 녹화해 되감는 방법을 TTD.exe의 녹화 설계, 링 버퍼, TTD.Calls 쿼리, 덤프와의 역할 분담까지 설명합니다.
-
인수는 왜 깨지는가 ── Windows 명령줄 인수의 규칙
Windows에는 인수의 배열이 존재하지 않으며, CreateProcess에 전달되는 것은 한 줄의 문자열이고 분할은 받는 쪽이 합니다. CommandLineToArgvW·CRT·.NET의 분할 규칙과 .NET의 ArgumentList, C++에서의 올바른 조립 방법을 설명합니다.
-
Windows 프린터 드라이버 제공 종료 ── 업무 앱의 장표·라벨 인쇄는 어떻게 대비할 것인가
Microsoft는 v3/v4 프린터 드라이버의 제공 종료를 단계적으로 진행하고 있으며, 2026년 7월부터는 IPP 클래스 드라이버가 우선됩니다. Windows protected print mode에서 무엇이 사라지는지, 업무 앱의 장표·라벨 인쇄가 어디에 의존하고 있는지를 점검...
-
WinRT는 COM이다 - IInspectable, .winmd, 언어 프로젝션, 그리고 WinUI가 지금도 바이너리 계약 위에 서 있는 이유
WinRT는 매니지드 런타임이 아니라 COM에 메타데이터(.winmd)와 언어 프로젝션을 더한 ABI입니다. IUnknown과 IInspectable의 관계부터 데스크톱 앱에서의 HWND 초기화, package identity의 막히는 지점까지 설명합니다.
-
부모가 죽은 뒤에 무엇이 남는가 — Job Object로 자식 프로세스를 기르기
UI를 강제로 종료해도 SDK의 헬퍼가 남아 카메라나 COM 포트를 붙잡고 놓지 않는 이유는 무엇인가. Job Object로 프로세스 트리를 하나의 단위로 만들고, KillOnJobClose와 완료 포트로 자식 프로세스의 수명을 설계하는 방법을 계측 애플리케이션의 시선에서 설명합니다.
-
OLE 개체란 무엇인가 - 포함과 연결의 구조, 그리고 업무 문서의 함정
Word에 Excel 표를 넣는 기능의 정체가 바로 OLE 개체입니다. 포함과 연결의 차이, 복합 파일과 구조화 스토리지, In-Place Activation의 구조부터 링크 깨짐, 파일 비대화, 보안 대책까지 실무 관점에서 설명합니다.
-
Win32 스레드 풀 API ── CreateThreadpoolWork로 「스레드를 만들지 않는」 병렬 처리
네이티브 코드에서 CreateThread를 마구 늘리고 있지는 않습니까. Vista에서 새로 설계된 Win32 스레드 풀 API의 work, timer, wait, io 네 가지 객체와 클린업 그룹, 콜백에서 해서는 안 되는 일까지 1차 자료를 근거로 설명합니다.
-
Named Pipe 실무 ── Windows 프로세스 간 통신의 정석을 설계부터 보안까지
Windows 프로세스 간 통신의 정석인 Named Pipe를 실무 관점에서 설명합니다. 바이트/메시지 모드의 선택, 여러 클라이언트를 처리하는 서버 설계, ACL과 impersonation 보안, .NET의 NamedPipeStream까지 일차 자료를 근거로 정리합니다.
-
절전에서 재개하면 깨지는 앱 ── 전원 이벤트의 구조와 재개에 강한 업무 앱을 만드는 방법
노트북을 열었더니 업무 앱의 통신이 끊어져 있었다――원인은 절전을 전제하지 않은 설계입니다. WM_POWERBROADCAST에 의한 알림의 흐름, Modern Standby의 동작, 끊김·재연결 설계, 절전 억제와 조사 명령까지를 1차 정보로 설명합니다.
-
DllMain과 로더 락 ── 「DLL 초기화에서는 아무것도 하지 말라」는 말의 진짜 이유
DllMain에서 LoadLibrary나 스레드 동기화를 해서는 안 되는 이유는 무엇인가. 모든 DLL 알림을 직렬화하는 로더 락의 구조부터, 데드락이 성립하는 전형적인 시나리오, 지연 초기화 같은 올바른 설계, hang 조사 절차까지를 1차 정보로 설명합니다.
-
「응답 없음」의 정체 ── Windows가 앱을 「멈췄다」고 판단하는 구조와, 멈추지 않는 설계
Windows의 「응답 없음」은 창이 5초 동안 메시지를 꺼내지 않으면 OS가 판단해 고스트 창으로 교체하는 구조입니다. 판단의 내부 동작부터 멈추는 전형적인 원인, UI 스레드에서 무거운 처리를 빼내는 설계, hang 조사 절차까지 설명합니다.
-
클립보드와 드래그 앤 드롭의 구조 ── 업무 앱에서 OLE 데이터 전송을 올바르게 다루기
Excel 표를 붙여 넣으면 서식이 무너지고, 원본을 닫으면 붙여 넣을 수 없다── 원인은 같은 내용을 여러 형식으로 두는 클립보드입니다. 표준 형식·지연 렌더링·OLE 드래그 앤 드롭부터 기록과 클라우드 동기 정책까지 설명합니다.
-
WPR/WPA 실무 ── 「PC 전체가 느리다」를 시스템 전체에서 조사하는 성능 조사 입문
「PC 전체가 느리다」「부팅이 느리다」처럼 작업 관리자로는 따라갈 수 없는 성능 문제는 OS 전체 ETW 트레이스를 모아 읽는 WPR/WPA로 조사합니다. wpr.exe 수집 절차부터 WPA에서 CPU·대기·디스크 I/O를 읽는 법까지 설명합니다.
-
앱에서 본 Windows 종료 ── 종료 알림·다시 시작·전원 차단을 올바르게 견디기
Windows Update의 야간 다시 시작으로 계측 데이터가 깨졌다 ── 그런 사고는 설계로 막을 수 있습니다. WM_QUERYENDSESSION과 PRESHUTDOWN으로 종료 알림을 받는 방법, 수 초 안에 끝내는 정리, 전원 차단에도 견디는 저장 설계까지를 1차 정보로 설명...
-
Windows 앱 호환이 동작하는 방식 ── 호환성 모드, 심(Shim), Compatibility Administrator로 오래된 앱의 수명을 연장하는 방법
호환성 모드에 체크하면 오래된 앱이 동작하는 이유. 정체인 심(API 훅)의 구조, 대표 심의 역할, Compatibility Administrator와 sdbinst로 조직에 배포하는 방법, 통하지 않는 한계, 수명 연장과 이전 사이의 판단까지 설명합니다.
-
Windows 셸 통합의 현재 ── 컨텍스트 메뉴, 파일 연결, Windows 11의 변화
Windows 11에서 컨텍스트 메뉴가 「더 많은 옵션 표시」 뒤로 숨는 이유를, 확장자→ProgID→verb라는 파일 연결의 기본, 기존형 셸 확장의 주의점, IExplorerCommand와 MSIX/sparse package의 새 방식까지 이어서 설명합니다.
-
Windows 오류 코드 읽기 ── Win32·HRESULT·NTSTATUS 삼층 구조
0x80004005가 나오면 검색하기 전에 먼저 분해합니다. Win32 오류·HRESULT·NTSTATUS의 삼층 구조, 0x8007xxxx가 Win32 오류를 감싼 형태라는 가장 중요한 패턴, err.exe와 PowerShell로 코드를 찾는 방법까지 정리합니다.
-
Windows의 「메모리 사용량」은 무엇을 나타내는가 ── Working Set·Private Bytes·Commit·페이지 파일을 올바르게 읽는 법
작업 관리자의 메모리, Working Set, Private Bytes, Commit은 같은 값이 아닙니다. Windows의 가상 메모리와 물리 메모리의 관계, 페이지 파일의 역할, 메모리 부족이나 누수 조사에서 봐야 할 지표를 설명합니다.
-
WMI/CIM을 C#·PowerShell에서 쓰기 ── 하드웨어 정보 가져오기·프로세스 모니터링·원격 조회의 실무 가이드
PC 시리얼 번호 조회, 디스크 여유 공간 모니터링, 프로세스 시작 감지의 흔한 답이 WMI/CIM입니다. Get-CimInstance 등 CIM cmdlet 사용법과 구 Get-WmiObject에서의 이전, C#의 System.Management와 CIM API 구분, 실무 레시...
-
Windows 앱에서 USB 기기를 다루는 방법 ── 가상 COM・HID・WinUSB・전용 SDK를 고르는 법
Windows 앱에서 장치나 USB 기기를 제어하는 방법을, 가상 COM 포트・HID・WinUSB・벤더 제공 SDK의 4가지 방식으로 비교합니다. 드라이버 도입 필요 여부, 여러 대 연결 시의 식별, 착탈 추적, 성능의 상한까지 실무 관점으로 정리합니다.
-
업무 시스템의 코드 설계 ── 상품 코드·고객 코드를 정하는 법과 check digit
상품 코드·고객 코드 등 업무 시스템의 코드 체계를 정하는 실무 가이드. 유의미 코드와 무의미 일련번호 판단표, JAN·Luhn 등의 check digit 산식과 C# 구현, Excel의 선행 0 소실 대책, 자릿수 초과와 이행까지 정리합니다.
-
장애 대응은 복구로 끝나지 않는다 ── 소규모 개발팀을 위한 포스트모템(재발 방지)의 틀
장애를 「고치고 사과하고 끝」으로 처리하면 같은 장애가 반복됩니다. blameless postmortem을 소규모 팀에 맞게 옮겨, 1시간이면 쓸 수 있는 템플릿, 재발 방지책의 강도 판단표, 실시 트리아지까지 정리합니다.
-
ADR(Architecture Decision Record) 입문 ── 소규모 개발에서 '왜 이런 설계로 했는가'를 남기는 최소한의 방법
코드는 '왜 그렇게 했는지'를 말하지 않습니다. ADR(Architecture Decision Record)로 설계 판단의 이유를 결정 하나당 Markdown 파일 하나로 남기는 방법을, 템플릿과 쓸지 말지의 판단표, 실제 예와 함께 해설합니다.
-
업무 앱의 DB 스키마를 버전 관리한다 ── 「고객사마다 DB가 다르다」를 막는 마이그레이션 실무
고객사마다 흩어진 업무 앱의 DB 스키마를 버전 관리하는 실무 가이드. PRAGMA user_version과 전진 마이그레이션의 C# 구현, EF Core Migrations·DbUp·자체 구현 판단표, 2단계 릴리스까지 정리합니다.
-
WinForms / WPF 앱의 CI/CD 실전 ── GitHub Actions로 빌드부터 서명·배포까지 자동화하기
WinForms / WPF 앱의 CI/CD를 GitHub Actions로 구성하는 실무 가이드입니다. windows-latest에서 빌드+테스트를 돌리는 최소 YAML, 태그 기반 버전 부여, signtool 서명 연동, MSI/MSIX/ClickOnce/xcopy별 CI 통합 판...
-
자사 개발 Windows 앱이 바이러스로 오인되면 ── Microsoft Defender 오탐 대응과 성능 영향에 대처하는 법
자사 개발 Windows 앱이 Microsoft Defender에 오탐되었을 때의 정규 대응을 정리합니다. 현대 바이러스 백신의 동작 방식, Microsoft에 오탐을 신고하는 방법, 격리에서 복원하기, 제외 설정을 올바르게 넣는 방법과 그 위험까지 설명합니다.
-
슬립・최대 절전 모드・Modern Standby와 장시간 가동 앱 ── '한밤중에 멈춰 있었다'를 설계로 막는다
장시간 동작하는 Windows 앱이 '아침에 보니 멈춰 있었다'가 되는 원인을 S3 슬립/최대 절전 모드/Modern Standby의 차이에서 정리합니다. 슬립 중 타이머와 TCP 연결의 동작, SetThreadExecutionState로 억제하는 방법까지 설명합니다.
-
Windows on Arm에서 업무 앱은 동작하는가 ── x64 에뮬레이션(Prism)과 네이티브 DLL·COM의 현실
「Windows on Arm에서 업무 앱은 동작하는가」에 개발자와 사내 IT를 위해 답합니다. x64 에뮬레이션(Prism)의 구조, 드라이버처럼 동작하지 않는 계층, .NET의 AnyCPU와 P/Invoke 문제, Arm 대응 체크리스트까지 정리합니다.
-
소스 코드도 명세서도 없는 시스템을 인수인계받았다면 ── 멈추지 않고 운영·유지보수하기 위한 실무 절차
소스 코드도 명세서도 없는 업무 시스템의 운영·유지보수를 시작하는 실무 절차를 정리합니다. 가동 중인 환경의 보존과 백업, 실행 파일·DB 인벤토리, 동작을 바탕으로 한 명세 복원, 수명 연장·래핑·재구축 판단까지 설명합니다.
-
MAX_PATH와 Windows 경로·파일 이름의 함정 ── 260자 제한, 예약 이름, 끝의 점, 대소문자
「파일을 찾을 수 없습니다」의 단골 원인인 경로·파일 이름 제한을 정리합니다. MAX_PATH=260자의 구성, LongPathsEnabled로 긴 경로를 켜는 방법, CON 등의 예약 이름, 끝 점의 정규화, Path.Combine의 함정까지 설명합니다.
-
네트워크 드라이브와 UNC 경로의 함정 ── 업무 앱에서 파일 서버(공유 폴더)를 다루는 실무
업무 앱에서 공유 폴더로 출력·감시할 때 자주 겪는 문제를 정리합니다. 드라이브 문자(Z:)가 서비스에서 보이지 않는 이유, 실행 계정별로 필요한 권한, 오류 1219, FileSystemWatcher 주의점까지 설명합니다.
-
Windows 앱의 작업 트레이 상주와 토스트 알림 ── NotifyIcon의 함정과 AppNotification 고르는 법
업무용 Windows 앱의 작업 트레이 상주와 토스트 알림 구현을 정리합니다. NotifyIcon의 올바른 사용법, Explorer 재시작 시 재등록, 토스트 API 3종의 선정 판단표, 알림이 도착하지 않는 경우까지 설명합니다.
-
VB6 앱은 언제까지 동작하는가 ── 런타임 지원 현황과 현실적인 .NET 이전 진행 방법
VB6 앱은 언제까지 동작할까요. 런타임은 Windows 11에서도 동작 대상이고 IDE는 지원이 종료된 현황을 정리하고, 전면 재작성·자동 변환·단계 이전의 판단표, 이전 전 자산 파악, VB6와 .NET의 비호환까지 정리합니다.
-
업무 앱의 연호·공휴일·마감일 처리 ── 연호 변경에 강한 설계와 JapaneseCalendar·영업일 계산 실무
연호 표시, 공휴일을 제외한 영업일 계산, 마감일 처리처럼 일본 업무 앱에 특유한 날짜 처리를 정리합니다. JapaneseCalendar와 연호 변경에 강한 설계, 내각부 CSV로 공휴일 마스터를 운영하는 방법, AddMonths의 월말 조정 사양을 바탕으로 한 마감일 계산까지 설...
-
Process Monitor(ProcMon) 실전 가이드 ── 「설정이 읽히지 않는다」「ACCESS DENIED」를 10분 만에 특정한다
「설정을 고쳤는데도 반영되지 않는다」와 같은 장애는 Process Monitor(ProcMon)으로 파일·레지스트리 액세스의 실제 동작을 보고 원인을 특정할 수 있습니다. 필터의 실무적인 사용법, NAME NOT FOUND 등의 읽는 법까지 설명합니다.
-
Windows 앱의 Web화, 하지 않는 편이 나은 경우 ── 판단표와 ‘분할’이라는 현실적 해법
장치 연동·로컬 파일 처리·오프라인 운영이 있는 Windows 앱에서는 Web화가 비용 증가와 기능 저하를 부를 수 있습니다. Web화에 맞는 경우와 맞지 않는 경우의 판단표, 그리고 일부만 Web으로 내보내는 분할 구성이라는 현실적 해법을 정리합니다.
-
WinForms/WPF 앱의 다국어화 ── resx·satellite assembly·culture 전환의 실무
Windows 데스크톱 앱의 다국어화를 정리합니다. CurrentCulture와 CurrentUICulture의 차이, resx와 satellite assembly의 구조, WPF에서 현실적인 방식 선택, 런타임 언어 전환, 서식·RTL까지 설명합니다.
-
CSV는 「그냥 텍스트」가 아닙니다 ── C# 업무 앱의 CSV 실무(문자 코드·Excel 호환·인젝션 대책)
업무 앱 CSV 입출력의 전형적인 사고──Split(',') 자체 파싱, BOM 없는 UTF-8의 문자 깨짐, 앞자리 0 소실──을 정리하고, RFC 4180 규칙, Shift_JIS 취급, TextFieldParser를 이용한 안전한 읽기까지 설명합니다.
-
HttpClient를 using으로 감싸면 안 됩니다 ── C# 업무 앱의 HTTP 통신 실무(생성 패턴·타임아웃·재시도)
C#의 HttpClient는 매번 using으로 생성하면 소켓이 고갈되고, static으로 두면 DNS 변경을 따라가지 않습니다. PooledConnectionLifetime과 IHttpClientFactory를 쓰는 올바른 생성 패턴, 타임아웃 설계, 재시도까지 정리합니다.
-
PerfView와 dotnet-trace로 「느림」을 특정한다 ── .NET 성능 조사의 실무 입문
업무 앱이 「느리다」「CPU가 붙어 있다」일 때, 어떤 도구로 무엇을 볼지. PerfView와 dotnet-trace의 역할 분담, CPU 샘플링 읽는 법, ThreadTime으로 블록 시간을 조사하는 절차까지 실무 조사 흐름을 정리합니다.
-
Windows 이벤트 로그·ETW 입문 ── 업무 앱 로그를 OS 표준 메커니즘에 올리기
이벤트 로그와 ETW는 운영 담당자와 OS 표준 도구에서 보이는 별도 계층의 기록입니다. 파일 로그를 포함한 세 수단의 역할 분담, .NET에서의 기록 방법, EventSource를 통한 ETW 계측, 수집·조사의 실무와 함정까지 설명합니다.
-
appsettings.json만이 전부가 아닙니다 ── Windows 업무 앱의 구성 관리 실무(환경별 설정·비밀 정보·쓰기 위치)
Windows 업무 앱의 구성 관리를 정리합니다. appsettings.json의 계층화, IOptions/IOptionsMonitor의 용도 구분, 환경별 설정, 쓰기가 가능한 설정의 위치, 비밀 정보의 취급, app.config에서의 마이그레이션까지 설명합니다.
-
Windows 업무 앱의 인쇄와 PDF 출력 ── System.Drawing.Printing / WPF / 장표 라이브러리 구분
PrintDocument로 하는 WinForms 인쇄, WPF의 FlowDocument/FixedDocument 인쇄, PDF 출력 선택지를 요건별 판단표로 정리합니다. 페이지 나눔 제어, DPI 어긋남, Windows 서비스에서의 인쇄 위험까지 설명합니다.
-
VB6 / Access 업무 앱의 수명 연장과 마이그레이션 ── 유지·래핑·교체 판단표
VB6와 Access 업무 앱을 유지할지, 수명을 연장할지, 교체할지를 어떻게 판단할지. 런타임 현황, ACE의 32bit/64bit 문제, 공유 폴더에서 여러 명이 함께 쓰는 리스크, SQL Server로의 업사이즈까지 판단표로 정리합니다.
-
Windows 앱의 다중 실행 방지 ── 이름 있는 Mutex와 이중 실행 시 활성화
업무용 Windows 앱의 다중 실행 방지를 이름 있는 Mutex로 구현하는 방법을 정리합니다. Global\와 Local\ 차이로 생기는 RDP 환경의 함정, AbandonedMutexException, 기존 인스턴스를 앞으로 가져오기까지 설명합니다.
-
C#에서 Win32 API를 안전하게 호출하기 ── P/Invoke 실무 가이드(DllImport / LibraryImport / CsWin32)
C#에서 Win32 API를 P/Invoke로 호출할 때 실무에서 짚을 포인트를 정리합니다. DllImport와 LibraryImport의 차이, CsWin32를 이용한 자동 생성, 문자열 마샬링의 함정, SafeHandle, 32/64bit 차이까지 구현 예와 함께 설명합니다.
-
Windows 앱 외주·수탁 개발을 의뢰하기 전에 정리할 점
Windows 앱 외주·수탁 개발을 의뢰하기 전에, 기존 소프트웨어 수정, 장치 연동, COM/ActiveX, 배포·업데이트, 유지보수를 정리하는 포인트를 설명합니다.
-
Windows에서 'Windows에서 PC를 보호했습니다'가 나타나는 이유
Windows 앱을 배포할 때 SmartScreen 경고가 나오는 이유를 코드 서명, EV/OV 인증서, Azure Artifact Signing, MSIX, Microsoft Store, ClickOnce, 사내 배포, App Control까지 실무 관점에서 정리합니다.
-
COM/OCX/ActiveX 개발에서 막히기 쉬운 등록과 bitness의 함정
COM, OCX, ActiveX 개발에서 자주 막히는 32bit/64bit, Visual Studio 2022, regsvr32/Regasm, 관리자 권한, HKCR, STA/MTA를 실무 관점에서 정리합니다.
-
ClickOnce란 무엇인가 - 동작 방식, 업데이트, 적합한 경우와 그렇지 않은 경우를 실무 관점에서 정리
.NET의 Windows 데스크톱 앱 배포에 쓰이는 ClickOnce에 대해, 매니페스트, 업데이트, 캐시, 서명, 적합한 경우와 그렇지 않은 경우를 Mermaid 다이어그램과 함께 정리합니다.
-
Windows Sandbox로 앱 검증을 빠르게 하는 방법
Windows Sandbox로 관리자 권한 문제의 원인 분리, 클린 환경에서의 재현, 권한 부족·리소스 부족의 재현을 효율화하는 방법을 .wsb와 CLI의 용도 구분까지 포함해 정리합니다.
-
자동 업데이트의 보안 설계 - HTTPS만으로는 부족한 이유
자동 업데이트를 신뢰 경계로 다루고, 서명된 metadata, 클라이언트 측 검증, 키 분리, 롤백 대책, fail-closed를 실무 관점에서 정리합니다.
-
자작 logger의 최소 요건과 결합 테스트 체크리스트
자작 앱의 진단 로그를 신뢰할 수 있게 만들기 위해, UTF-8 JSON Lines, 필수 항목, flush·로테이션·이상 시 동작과, 실제 파일·실제 스레드에서의 결합 테스트 관점을 정리합니다.
-
유닛 테스트와 결합 테스트의 경계를 어디에 둘 것인가
유닛 테스트와 결합 테스트의 경계를 순수 로직, 포맷, 배선, 환경 차이, 시간 의존의 관점에서 정리하고, 실무에서 덜 헤매는 판단표로 모읍니다.
-
Windows DLL 이름 확인 방식 - 검색 순서와 SxS
Windows의 DLL 이름 확인을 DLL search order, Known DLLs, loaded-module list, API set, SxS manifest, LoadLibrary 계열 API의 영향까지 실무용으로 정리합니다.
-
Windows에서 관리자 권한이 필요한 때는 언제인가 - UAC, 보호 영역, 설계로 구분하는 방법
Windows에서 관리자 권한이 필요한 상황을 UAC, 보호 영역, 서비스, 드라이버, per-user/per-machine 설계 관점에서 실무용으로 정리합니다.
-
VBA란 무엇인가 - 제약, 전망, 교체가 필요한 경우와 현실적인 이전 패턴
VBA의 기본과 제약, 전망, 교체가 필요한 경우, Excel 매크로나 사내 도구를 단계적으로 이전하는 현실적인 진행 방식을 정리합니다.
-
시리얼 통신 앱의 함정 - 재접속과 로그 설계까지
장치 연계나 계측기 제어에서 피하고 싶은 시리얼 통신 앱의 함정을, 프레이밍, 타임아웃, RTS/CTS, DTR/RTS, 재접속, 로그 설계까지 실무 관점으로 정리합니다.
-
Windows 앱 크래시 시 로그와 덤프를 남기는 설계
Windows 앱이 예상 밖 예외나 프로그램 실수로 죽어도 나중에 원인을 추적할 수 있는 증거를 남기기 위해, 통상 로그, 최종 크래시 마커, WER LocalDumps, 감시 프로세스를 어떻게 조합해야 하는지를 정리합니다.
-
Windows 앱 UX 설계 - 이용 환경별 우선순위
Windows 앱 UX 설계에서 무엇을 우선할지 BtoC / BtoB, 입력 방식, 이용 환경, 오조작 비용별 판단표로 정리합니다.
-
WinForms/WPF/WinUI 고르는 법 - 실무 판단표
WinForms, WPF, WinUI 중 무엇을 고를지를 신규 개발, 기존 자산, 배포, UI 표현, 팀 구성 관점에서 정리합니다.
-
공유 메모리의 함정과 실무 베스트 프랙티스
공유 메모리를 실무에서 쓸 때의 함정과, 동기, 가시성, 수명, ABI, 권한까지 포함해 사고율을 낮추는 설계를 정리합니다.
-
Windows 사용자 프로필 입문 - AppData와 NTUSER.DAT
Windows 사용자 프로필의 기본, AppData 용도 구분, 로컬/로밍/Mandatory/Temporary, Folder Redirection, FSLogix, 손상되었을 때 확인하는 방법을 정리합니다.
-
Reg-Free COM이란 - 등록 없이 COM을 쓰는 구조
Reg-Free COM의 기본, 액티베이션 컨텍스트와 매니페스트의 역할, 장점, 한계, 실무에서의 판단 축을 정리합니다.
-
Excel 장표 출력 만드는 법 - COM/Open XML/템플릿
Excel 장표 출력은 Excel을 자동 조작할지, xlsx를 직접 생성할지, 기존 VBA를 남길지에 따라 설계가 상당히 달라집니다. Windows 앱이나 업무 시스템에서의 장표 출력을 전제로, 방식 선정의 기준과 추천 구성을 정리합니다.
-
Media Foundation으로 MP4에 이미지와 텍스트를 오버레이하는 방법
Media Foundation으로 MP4 각 프레임에 이미지와 텍스트를 합성해 새 MP4를 만드는 생각을, Source Reader, 그리기, 색 변환, Sink Writer의 역할 분담과 1파일 완결 C++ 샘플로 정리합니다.
-
Windows 크래시 덤프 수집 입문 - WER/ProcDump/WinDbg
재현하기 어려운 Windows 앱 크래시를 추적하기 위해, WER LocalDumps, ProcDump, MiniDumpWriteDump, WinDbg의 용도 구분과 운영상 주의점을 정리합니다.
-
Windows에서 Sleep(1)보다 이벤트 대기를 우선해야 하는 이유
Windows에서는 짧은 timed wait의 정밀도가 system clock granularity와 스케줄링의 영향을 받습니다. 작업 도착이나 I/O 완료, 정지 요청을 기다린다면 일정 시간마다 폴링하지 말고 이벤트 구동으로 바꿔야 하는 이유를 정리합니다.
-
예기치 않은 예외가 났을 때 종료할지 계속할지 판단표
예상하지 못한 예외가 났을 때 앱을 종료할지 계속할지를, 상태 파괴·외부 부작용·스레드·네이티브 경계의 관점에서 정리합니다.
-
Windows 앱에서 “관리자 권한이 필요한 처리만” 분리하는 구체적인 작성법
Windows 앱에서 UI는 asInvoker로 두고 관리자 권한이 필요한 처리만 helper EXE로 분리하는 설계를 UAC, runas, named pipe, 입력 검증까지 포함해 구체적으로 정리합니다.
-
Windows 앱의 기밀 정보 저장 - DPAPI로 평문 설정을 피하기
Windows 앱에서 접속 정보나 API 토큰을 설정 파일에 평문으로 저장하지 않기 위해, DPAPI / ProtectedData의 사고방식, CurrentUser와 LocalMachine의 차이, 구현 시 주의점을 정리합니다.
-
.NET Framework에서 .NET으로 마이그레이션하기 전 체크리스트
.NET Framework에서 .NET으로 마이그레이션하기 전에 프로젝트 종류, 미지원 기술, NuGet 의존성, SDK 스타일, WPF/WinForms, CI/CD, 운영을 확인하는 실무 체크리스트입니다.
-
Media Foundation에서 YUV를 RGB로 변환하는 방법
Media Foundation에서 YUV 프레임을 RGB로 변환하는 방법을 Source Reader의 자동 변환과 NV12/YUY2 직접 변환, stride, 색공간 관점에서 정리합니다.
-
Windows NIC 고급 설정 가이드 - RSS/LSO/EEE/Wake on LAN
Windows NIC 고급 설정을 실무 관점에서 정리합니다. Jumbo Packet, Speed & Duplex, RSS, RSC, LSO, Flow Control, EEE, Wake on LAN 등, 설정을 바꾸면 무엇이 달라지는지를 모았습니다.
-
Media Foundation으로 MP4의 지정 시각에서 정지 이미지를 잘라내는 방법
Source Reader로 MP4의 지정 시각에 가까운 프레임을 꺼내고, stride와 RGB32의 alpha를 맞춘 뒤 PNG로 저장하는 구현 절차를 정리합니다.
-
Windows 앱 개발 보안 최소 체크리스트
WPF / WinForms / WinUI / C++ / C# 업무 앱에서 권한, 서명, 업데이트, 비밀 정보, HTTPS, 입력 검증, DLL 로드, 로그의 기본을 체크리스트 형식으로 정리합니다.
-
COM / ActiveX / OCX란 무엇인가 - 차이와 관계를 정리해 해설
COM이란 무엇인지, ActiveX란 무엇인지, OCX란 무엇인지를 차이와 관계, OLE와의 연결, 어디서 쓰이는지, 지금 어떻게 봐야 하는지까지 실무 관점에서 정리합니다.
-
C# Native AOT DLL을 C/C++에서 호출하는 방법
C# 클래스 라이브러리를 Native AOT로 네이티브 DLL로 발행하고, UnmanagedCallersOnly 엔트리 포인트를 C/C++에서 호출하는 구성을, 쓰임새와 구현 패턴, 주의점에서 정리합니다.
-
.NET Generic Host와 BackgroundService를 데스크톱 앱에서 쓰는 이유
Windows 도구나 상주 앱에서 시작, 주기 처리, 종료 처리, 로그, 설정, DI를 정리하기 위해 Generic Host와 BackgroundService를 어떻게 쓰는지 정리합니다.
-
ActiveX / OCX를 지금 어떻게 다룰 것인가 - 남길지・감쌀지・교체할지 판단표
ActiveX / OCX를 만났을 때 남길지・감쌀지・교체할지 가운데 무엇을 고를지를, 32bit / 64bit, 등록, 브라우저 의존, 벤더 보수까지 포함해 정리합니다.
-
Application Verifier로 만드는 Windows 이상 경로 테스트 기반
Application Verifier가 무엇인지, Handles, Heaps, Low Resource Simulation, !htrace를 사용한 Windows 이상 경로 테스트 기반 구축과 함께 정리합니다.
-
산업용 카메라 장기 가동 크래시 조사 - 핸들 누수편
Windows 앱이 장시간 가동 뒤에 갑자기 크래시할 때의 보는 법을, 산업용 카메라 제어 앱 사례로 핸들 누수를 찾는 방법과 로그 설계 관점에서 정리합니다.
-
TCP 재전송으로 산업용 카메라 통신이 멈추는 원인 분리
TCP 재전송으로 산업용 카메라 통신이 수 초 정지할 때의 원인 분리 방법을 패킷 로스, RTO, RFC1323 타임스탬프, Wireshark 확인 포인트와 함께 정리합니다.
-
FileSystemWatcher 실무 가이드 - 누락과 중복 대책
FileSystemWatcher 사용법과 주의점을 누락, 중복 알림, 완료 판정의 함정, 재스캔, 원자적 claim, idempotency 관점에서 정리합니다.
-
Media Foundation 입문 - COM 관점으로 API 이해하기
Media Foundation이 무엇인지, COM, HRESULT, IMFSourceReader, MFT 등 Windows 미디어 API의 기본 용어와 함께, 먼저 짚어야 할 순서로 정리합니다.
-
평범한 Windows에서 소프트 리얼타임을 최대한 구현하기 위한 실전 가이드
평범한 Windows에서 주기 처리와 저지연 처리를 안정시키는 관점을 타이머 정밀도, 우선순위, 전원 설정, 모니터링 방법부터 정리합니다.
-
파일 연계의 배타 제어 기초 지식 - 파일 락과 원자적 claim의 베스트 프랙티스
파일 연계의 배타 제어를 파일 락, 원자적 claim, temp -> rename, idempotency 관점에서 정리하고, 공유 폴더 연계에서 사고를 피하는 설계를 정리합니다.
-
C#에서 네이티브 DLL 호출하기: C++/CLI 래퍼 vs P/Invoke
C#에서 네이티브 DLL을 쓸 때 P/Invoke로 충분한 장면과 C++/CLI 래퍼가 효과를 내는 장면을, 소유권·예외·C++ 타입·콜백 등의 관점으로 나누고, 얇은 래퍼를 끼우는 구성의 이점을 정리합니다.
-
COM STA/MTA의 기초 지식 - 스레드 모델과 hang을 피하는 사고방식
COM STA/MTA의 기초 지식을 Apartment Model, UI 스레드, 메시지 루프, 마샬링, hang을 피하는 사고방식까지 포함해 정리합니다.
-
32bit 앱에서 64bit DLL을 호출하는 COM 브리지 사례
32bit 앱에서 64bit DLL을 직접 호출할 수 없을 때, COM 브리지로 연동하는 발상을 Windows의 제약, 구성, 처리 흐름과 함께 정리합니다.
-
COM이란 무엇인가 - Windows COM 설계가 지금도 아름다운 이유
Windows COM의 인터페이스 설계, IUnknown, GUID, 바이너리 호환성 관점에서 COM이 무엇인지 정리하고, 지금도 통하는 이유를 해설합니다.