“Windows 개발” 태그의 글
“Windows 개발” 태그가 붙은 글 85건을 최신순으로 정리했습니다.
-
Win32 스레드 풀 API ── CreateThreadpoolWork로 「스레드를 만들지 않는」병렬 처리
네이티브 코드에서 CreateThread를 여기저기 만들고 있지는 않은가요. Vista에서 개편된 Win32 스레드 풀 API의 work·timer·wait·io 네 객체, 클린업 그룹, 콜백에서 해서는 안 되는 일까지 1차 정보를 바탕으로 해설합니다.
-
네임드 파이프의 실무 ── Windows 프로세스 간 통신의 정석을 설계부터 보안까지
Windows 프로세스 간 통신의 정석인 네임드 파이프를 실무 관점에서 정리합니다. 바이트/메시지 모드 선택, 여러 클라이언트를 받는 서버 설계, ACL과 위장 보안, .NET NamedPipeStream까지 1차 정보를 바탕으로 설명합니다.
-
절전에서 재개하면 깨지는 앱 ── Windows 전원 이벤트의 구조와 살아남는 업무 앱
노트북을 열었더니 업무 앱의 연결이 죽어 있었다 ── 원인은 절전을 전제하지 않은 설계입니다. WM_POWERBROADCAST 알림의 흐름, Modern Standby의 동작, 끊김/재연결 설계, 절전 억제, 조사 명령을 1차 정보로 정리합니다.
-
DllMain과 로더 락 ── 「DLL 초기화에서는 아무것도 하지 말라」는 말의 진짜 이유
DllMain에서 LoadLibrary를 호출하거나 다른 스레드와 동기화해서는 안 되는 이유를 설명합니다. 로더 락이 모든 DLL 알림을 직렬화하는 구조, 데드락이 구조적으로 확정되는 고전적 시나리오, 초기화를 미루는 올바른 설계, 행(hang) 조사 방법을 1차 정보로 정리합니다.
-
「응답 없음」의 정체 ── Windows가 앱의 행을 판단하는 방식과 멈추지 않는 설계
Windows의 「응답 없음」은 창이 5초 동안 메시지를 꺼내지 않았다고 OS가 판단해 고스트 창으로 바꾸는 메커니즘입니다. 그 판단의 내부, 행의 고전적 원인, 무거운 작업을 UI 스레드에서 떼어 내는 설계, 행 조사 절차를 정리합니다.
-
클립보드와 드래그 앤 드롭의 구조 ── 업무 앱에서 OLE 데이터 전송을 올바르게 다루기
Excel 표를 붙여 넣으면 서식이 무너지고, 원본 앱을 닫으면 붙여 넣을 수 없게 되는 일── 둘 다 클립보드가 같은 내용을 여러 형식으로 한꺼번에 두기 때문입니다. 표준 형식, 지연 렌더링, OLE 드래그 앤 드롭, 클립보드 기록과 클라우드 동기 정책을 정리합니다.
-
WPR/WPA 실무 ── 「PC 전체가 느리다」를 시스템 전체로 조사하는 입문
작업 관리자로는 따라갈 수 없는 「PC 전체가 느리다」「기동이 느리다」는 성능 문제를, WPR/WPA로 OS 전체 ETW 트레이스를 캡처하고 읽어 조사합니다. 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 계열 명령어의 사용법과 구형 Get-WmiObject로부터의 이전, C#의 System.Management와 CIM API의 구분 사용, 실전...
-
Windows 앱에서 USB 기기를 다루는 방법 ── 가상 COM・HID・WinUSB・전용 SDK를 고르는 법
Windows 앱에서 장치나 USB 기기를 제어하는 방법을, 가상 COM 포트・HID・WinUSB・벤더 제공 SDK의 4가지 방식으로 비교합니다. 드라이버 도입 필요 여부, 여러 대 연결 시의 식별, 착탈 추적, 성능의 상한까지 실무 관점으로 정리합니다.
-
업무 시스템의 코드 설계 ── 상품 코드・고객 코드 정하는 방법과 체크 디지트
상품 코드・고객 코드 등 업무 시스템의 코드 체계를 정하는 실전 가이드. 유의미 코드와 무의미 일련번호의 판단표, JAN・Luhn 등 체크 디지트 산식과 C# 구현, Excel의 앞자리 0 소실 대책, 자릿수 초과와 이관까지 정리합니다.
-
장애 대응은 복구로 끝나지 않는다 ── 소규모 개발팀을 위한 포스트모템(재발 방지)의 틀
장애를 「고치고 사과하고 끝」으로 처리하면 같은 장애가 반복됩니다. blameless postmortem을 소규모 팀에 맞게 옮겨, 1시간이면 쓸 수 있는 템플릿, 재발 방지책의 강도 판단표, 실시 트리아지까지 정리합니다.
-
ADR(Architecture Decision Record) 입문 ── 소규모 개발에서 '왜 이런 설계로 했는가'를 남기는 최소한의 방법
코드는 '왜 그렇게 했는지'를 말해주지 않습니다. ADR(Architecture Decision Record)로 설계 판단의 이유를 1결정=1파일의 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에 의한 억제까지 설명합니다.
-
Arm판 Windows에서 업무 앱은 동작하는가 ── x64 에뮬레이션(Prism)과 네이티브 DLL·COM의 현실
「Arm판 Windows에서 업무 앱은 동작하는가」에 개발자·정보시스템 담당자를 위해 답합니다. 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의 올바른 사용법과 「닫으면 트레이로」설계, 탐색기 재시작 시 재등록, 토스트 API 3종(Windows App SDK AppNotificatio...
-
VB6 애플리케이션은 언제까지 동작할까 ── 런타임 지원 현황과 현실적인 .NET 이전 진행 방법
VB6 애플리케이션은 언제까지 동작할까요. VB6 런타임의 지원 정책(Windows 11도 지원 대상)과 IDE 지원은 이미 종료되었다는 비대칭적인 현황을 정리하고, 전면 재작성・자동 변환・단계적 이전의 판단표, 이전 전 자산 파악, VB6와 .NET의 비호환 지점, C#과 VB....
-
업무 앱의 일본 연호・공휴일・마감일 처리 ── 연호 개원에 강한 설계와 JapaneseCalendar・영업일 계산의 실무
장표에 「레이와 8년」을 표시하고, 공휴일을 제외한 영업일을 계산하며, 20일 마감 익월 말일 지급 ── 일본 업무 앱 특유의 날짜 처리에는 연호 개원, 공휴일의 법 개정, 월말의 반올림이라는 「나중에 바뀌는 사양」이 숨어 있습니다. 이 글에서는 JapaneseCalendar를 이...
-
Process Monitor(ProcMon) 실전 가이드 ── 「설정이 반영되지 않는다」「ACCESS DENIED」를 10분 만에 특정하기
「설정 파일을 수정했는데 반영되지 않는다」「어제까지는 동작했는데 오늘부터 실행되지 않는다」──소스 코드에 손을 대기 전에, Process Monitor(ProcMon)를 사용하면 파일·레지스트리 접근의 실제 동작으로부터 원인을 특정할 수 있습니다. Filter의 실무적인 사용법, ...
-
Windows 앱의 웹 전환, 하지 않는 편이 나은 경우 ── 판단표와 '분할'이라는 현실적 해법
'사내 Windows 앱을 웹으로 만들고 싶다'는 요청이 늘고 있지만, 장치 연동·로컬 파일 처리·오프라인 운용·고속 입력 UI를 갖춘 앱에서는 웹 전환이 오히려 비용 증가와 기능 저하를 부를 수 있습니다. 웹 전환에 적합한 경우와 부적합한 경우를 정리한 판단표와, 전면 웹 전환이...
-
WinForms/WPF 앱 다국어화 ── resx·새틀라이트 어셈블리·컬처 전환 실무
Windows 데스크톱 앱의 다국어화를 CurrentCulture와 CurrentUICulture의 차이, resx와 새틀라이트 어셈블리를 통한 리소스 구조, WinForms의 Localizable 속성, WPF에서의 현실적인 방식 선택, 실행 중 언어 전환, 레이아웃·서식·RTL...
-
CSV는 “그냥 텍스트”가 아니다 ── C# 업무 앱의 CSV 실무(문자 코드・Excel 호환・인젝션 대책)
업무 앱의 CSV 입출력에서 발생하는 전형적인 사고 패턴──Split(',')를 이용한 자체 파싱, BOM 없는 UTF-8의 Excel 문자 깨짐, 선행 0 소실, CSV 인젝션──을 정리하고, RFC 4180의 규칙, .NET에서의 Shift_JIS 처리(CodePagesEnco...
-
HttpClient를 using으로 감싸면 안 되는 이유 ── C# 업무 앱의 HTTP 통신 실무(생성 패턴・타임아웃・재시도)
C#의 HttpClient를 매번 using으로 생성하면 소켓 고갈이, static으로 만들면 DNS 변경을 따라가지 못하는 문제가 발생합니다──이 두 가지 큰 문제의 구조와, PooledConnectionLifetime・IHttpClientFactory를 이용한 올바른 생성 패턴...
-
PerfView와 dotnet-trace로 “느림”의 원인을 찾는다 ── .NET 성능 조사 실무 입문
업무 앱이 “느리다”, “CPU를 다 써버린다”, “가끔 멈춘다”고 할 때, 어떤 도구로 무엇을 봐야 할까요. PerfView와 dotnet-trace의 역할 분담, CPU 샘플링을 읽는 방법(inclusive/exclusive), ThreadTime을 이용한 블록 시간 조사, E...
-
Windows 이벤트 로그·ETW 입문 ── 업무 앱의 로그를 OS 표준 체계에 올리기
Windows 업무 앱의 로그를 파일 로그만으로 해결하고 있지는 않은가요? 이벤트 로그와 ETW는 운영 담당자나 OS 표준 도구에서 보이는 또 다른 계층의 기록입니다. 3가지 수단을 구분해서 쓰는 방법, .NET에서 기록하는 방법, EventSource를 이용한 ETW 계측, 수집...
-
appsettings.json만으로는 부족하다 ── Windows 업무 앱 구성 관리 실무(환경별 설정・비밀 정보・쓰기 위치)
Windows 업무 앱의 구성 관리를 appsettings.json의 계층화, IConfiguration과 IOptions/IOptionsSnapshot/IOptionsMonitor의 구분 사용, 환경별 설정, 쓰기 가능한 설정의 배치 위치, 비밀 정보 처리, 실행 중 설정 변경,...
-
Windows 업무 앱의 인쇄와 PDF 출력 - System.Drawing.Printing / WPF / 보고서 라이브러리 구분 사용법
PrintDocument를 이용한 WinForms 인쇄, WPF의 FlowDocument/FixedDocument 인쇄, PDF 출력의 선택지를 요구사항별 판단표로 정리합니다. 페이지 나눔 제어나 DPI 차이 같은 구현의 함정, Windows 서비스에서의 인쇄, 기본 프린터 의존의...
-
VB6 / Access 업무 애플리케이션의 연명과 이전 ── 남기다·감싸다·교체하다 판단표
VB6 애플리케이션과 Microsoft Access 업무 앱을 그대로 남길지, 일부만 감싸서 연명할지, 교체할지를 어떻게 판단하는지 정리합니다. 런타임의 현재 상황, ACE의 32bit/64bit 문제, 공유 폴더에서의 다인 이용 리스크, SQL Server로의 업사이징까지 판단표...
-
Windows 앱의 중복 실행 방지 ── 네임드 Mutex와 재실행 시 창 활성화
업무용 Windows 앱의 정석 요건인 「같은 앱을 두 번 실행시키지 않는다」를 네임드 Mutex로 구현하는 방법을 정리합니다. Global\ 과 Local\ 네임스페이스의 차이로 인한 RDP 환경의 함정, 소유 스레드 제약과 AbandonedMutexException, SetFo...
-
C#에서 Win32 API를 안전하게 호출하기 — P/Invoke 실무 가이드(DllImport / LibraryImport / CsWin32)
C#에서 P/Invoke로 Win32 API나 네이티브 DLL을 호출할 때의 실무 포인트를 정리합니다. DllImport와 LibraryImport의 차이, CsWin32를 이용한 시그니처 자동 생성, 문자열 마샬링의 함정, SafeHandle을 이용한 핸들 관리, SetLastE...
-
Windows 앱 외주·수탁 개발을 의뢰하기 전에 정리해야 할 것
Windows 앱의 외주·수탁 개발을 의뢰하기 전에, 기존 소프트웨어 개수, 장치 연계, COM/ActiveX, 배포·업데이트, 보수와 관련해 정리해야 할 포인트를 설명합니다.
-
Windows에서 'Windows에 의해 PC가 보호되었습니다'가 나타나는 이유
Windows 앱 배포 시 SmartScreen 경고가 뜨는 이유를 코드 서명, EV/OV 증명서, Azure Artifact Signing, MSIX, Microsoft Store, ClickOnce, 사내 배포, App Control까지 실무 관점에서 정리합니다.
-
COM 컴포넌트나 OCX / ActiveX 개발에서 빠지기 쉬운 것 - Visual Studio의 32bit / 64bit, 등록, 관리자 권한의 덫을 정리
COM 컴포넌트와 ActiveX, OCX 개발에서 자주 만나는 0x80040154나 0x80070005를 비트 수, 등록 방식, HKCU와 HKLM 스코프, 관리자 권한이라는 네 축으로 풀어 Visual Studio 2022의 64bit화 시대에 맞는 진단 순서와 운영 지침을 제시...
-
ClickOnce란 무엇인가 - 구조, 업데이트, 어울리는 장면・어울리지 않는 장면을 실무 시점에서 정리
ClickOnce가 무엇이고 매니페스트, 캐시, 업데이트, 서명이 어떻게 맞물려 동작하는지를 Mermaid 그림과 함께 정리하고, 사내용 .NET 데스크톱 앱 배포에서 어울리는 안건과 어울리지 않는 안건을 실무 시점에서 판단할 수 있도록 도와드립니다.
-
Windows 샌드박스로 Windows 앱 개발의 검증을 빠르게 하는 방법 - 관리자 권한 문제, 클린 환경, 권한 부족・리소스 부족의 재현을 실무용으로 정리
Windows Sandbox로 Windows 앱의 클린 환경 검증을 빠르게 하는 실무 노하우를 정리합니다. .wsb 파일을 용도별로 나누고, 입력은 읽기 전용・출력만 쓰기 가능으로 분리하며, 표준 사용자나 메모리 부족, GPU 없는 상태의 재현까지 다루는 방법을 알 수 있습니다.
-
자동 업데이트 기능의 보안 기본 - 나쁜 패턴과 베스트 프랙티스
자동 업데이트를 신뢰 경계로 다루는 사고방식을 정리합니다. HTTPS만으로 부족한 이유, signed metadata와 클라이언트 측 검증, 키 분리, fail-closed와 rollback, MSIX·ClickOnce 등 Windows의 기존 기반 활용까지 짚습니다.
-
자체 제작 logger를 피할 수 없을 때, 정말 필요한 최소 요건은 무엇인가: 실무 요건과 통합 테스트 관점
자체 제작 logger를 만들 때 처음부터 정해 두고 싶은 형식·필수 항목·flush·순환·실패 처리 등 최소 요건과, 실제 파일과 스레드를 쓰는 통합 테스트의 v1 체크리스트를 정리해, 장애 시에 신뢰할 수 있는 로그 기반을 굳히는 길을 보여 줍니다.
-
어디까지를 유닛 테스트로 검증하고 어디부터를 결합 테스트로 검증해야 하는가 - 경계를 긋는 방법과 실무 판단표
유닛 테스트와 결합 테스트의 경계를 어디에 그어야 할지 망설이는 분을 위해, 순수 로직과 접속·배선·환경 차이라는 축으로 분류하고 실무에서 바로 쓸 수 있는 판단표와 사례로 정리합니다. 테스트가 빠르고 망가지기 어려워집니다.
-
Windows에서 DLL 이름 해결의 메커니즘 - 검색 순서, Known DLLs, API set, SxS를 실무용으로 정리
Windows의 DLL 이름 해결을 검색 순서 암기에서 멈추지 않고, DLL redirection·API set·SxS manifest·Known DLLs 같은 전단 규칙, SetDefaultDllDirectories와 LoadLibraryEx의 사용 구분, 의존 DLL 함정까지 ...
-
Windows의 관리자 특권이 필요해지는 것은 언제인가 - UAC, 보호 영역, 설계상의 구분 방법
Windows에서 관리자 권한이 필요한지는 사용자 직함이 아닌 앱이 건드리는 경계로 정해진다는 관점에서, UAC 동작과 보호 영역, per-user 대 per-machine, 매니페스트와 분리 모델까지 정리하여 불필요한 승격을 줄이는 설계 판단 기준을 얻을 수 있습니다.
-
VBA란 무엇인가 - 제약, 장래성, 교체해야 할 장면과 현실적인 이행 패턴
VBA의 강점과 제약을 정리하고, Excel for the web 미지원이나 매크로 차단 같은 현실을 전제로 어디까지 VBA에 남기고 무엇을 .NET·Office Scripts·Office Add-ins로 분리할지, 단계 이행의 판단 기준과 진행 방식을 실무 시점에서 짚어 드립니다.
-
시리얼 통신 앱의 함정 - 1 byte 단위, 타임아웃, 플로우 컨트롤, 재접속, USB 변환, UI 프리즈를 먼저 정리
시리얼 통신 앱이 가끔 멈추거나 응답이 어긋나는 진짜 원인은 byte stream의 메시지 경계, 타임아웃, 재접속, single writer 설계에 있습니다. 실무에서 무너지기 쉬운 함정과 먼저 정리할 체크리스트를 한 번에 정리했습니다.
-
Windows 앱 크래시 시 로그와 덤프를 남기는 설계
Windows 앱이 예상치 못한 예외나 프로그램 실수로 떨어져도 나중에 원인을 추적할 수 있는 증적을 남기기 위해, 통상 로그·최종 크래시 마커·WER LocalDumps·감시 프로세스를 어떻게 조합해야 하는지 정리합니다.
-
Windows 앱 UX 설계 - 이용 환경별 우선순위
Windows 앱의 UX 설계에서 무엇을 우선해야 하는지를 BtoC/BtoB, 입력 방식, 이용 환경, 오조작 비용별 판단표로 정리합니다.
-
Windows Forms, WPF, WinUI 중 어느 것으로 할까 - 신규 개발, 기존 자산, 배포, UI 표현의 판단표
Windows 데스크톱 앱을 C#/.NET으로 새로 만들 때 WinForms·WPF·WinUI 중 무엇을 고를지, 신규 개발과 기존 자산, 배포 방식, UI 표현력, 팀 문화의 다섯 축으로 비교한 한 장짜리 판단표를 제시하여 독자가 자기 프로젝트에 가장 마찰이 적은 길을 빠르게 결...
-
공유 메모리를 사용할 때의 함정과 베스트 프랙티스 - 동기, 가시성, 수명, ABI, 보안을 먼저 정리
공유 메모리는 단순히 빠른 IPC가 아니라 동기, 가시성, 수명, ABI, 권한의 책임을 앱 측이 떠맡는 구조입니다. 본 글은 함정과 베스트 프랙티스를 정리하여 SPSC 링 버퍼나 더블 버퍼, 고정 헤더, 오프셋 참조 등 사고율을 내리는 설계 첫걸음을 잡아주는 길잡이입니다.
-
Windows 사용자 프로필 입문 - AppData와 NTUSER.DAT
Windows 사용자 프로필의 기본, AppData 구분 사용, 로컬/로밍/Mandatory/Temporary, Folder Redirection, FSLogix, 손상되었을 때 확인하는 방법을 정리합니다.
-
Reg-Free COM이란 - 등록 불필요로 COM을 쓰는 구조
Reg-Free COM은 COM 등록 정보를 매니페스트로 가져 앱 단위 액티베이션 컨텍스트로 해결하는 구조입니다. XCOPY 배포·버전 충돌·롤백을 가볍게 하는 한편, bitness·의존 DLL·TLB·설계 시 참조는 별개임을 정리하고 도입 판단 축까지 보여줍니다.
-
Excel 장표 출력을 어떻게 만들까 - COM 자동화 / Open XML / 템플릿 방식의 판단표
Excel 장표 출력에서 COM 자동화·Open XML·템플릿 삽입·기존 VBA 병용을 어떻게 가려 쓸지를 정리합니다. 사용자 PC와 무인 실행, 레이아웃 재사용 같은 요건별로 권장 구성과 빠지기 쉬운 곳까지 짚어 방식 선정의 판단표로 활용할 수 있게 합니다.
-
Media Foundation으로 MP4 동영상의 각 프레임에 이미지와 문자를 구워 넣는 방법 - Source Reader / 드로잉 / 색 변환 / Sink Writer 정리와 .cpp에 그대로 붙일 수 있는 1파일 완결판
MP4 동영상의 각 프레임에 이미지와 문자를 구워 넣어 새 MP4를 만드는 방법을, Source Reader 디코드 -> GDI+ 합성 -> NV12 색 변환 -> Sink Writer 재인코딩의 흐름과, Visual Studio C++에 그대로 붙일 수 있는 1파일 완결 샘플로 ...
-
Windows 앱의 크래시 덤프 수집 입문 - 우선 WER / ProcDump / WinDbg를 어떻게 구분해서 쓸까
Windows 앱의 재현 어려운 크래시를 쫓는 첫걸음으로, WER LocalDumps, ProcDump, MiniDumpWriteDump의 구분 사용과 미니/풀 덤프 선택, PDB 보관과 권한 설계, WinDbg에서 먼저 볼 포인트까지 입문자에게 정리합니다.
-
Windows에서 타이머 대기보다 이벤트 대기를 우선하는 이유 - 약 15.6ms 분해능의 폴링을 피한다
Windows의 짧은 timer wait는 system clock 분해능과 스케줄러 지연에 묶여 의도한 정밀도가 나오지 않습니다. 작업 도착·I/O 완료·정지 요청은 event 대기로, 시각 자체는 waitable timer로 나누는 설계 지침을 정리합니다.
-
상정하지 않은 예외가 발생했을 때의 체크리스트 - 앱을 종료시킬지 계속할지, 먼저 보는 판단표
예상하지 못한 예외가 발생했을 때 앱을 종료해야 할지 계속해야 할지를 상태 파괴·외부 부작용·스레드·네이티브 경계의 관점에서 정리합니다.
-
Windows 앱에서 「관리자 권한이 필요한 처리만」을 분리하는 구체적인 방법
Windows 앱에서 UI는 asInvoker로 두고 관리자 처리만 helper EXE로 분리하는 broker 설계를 runas 기동, 명명 파이프 ACL, 클라이언트 PID 검증, 고정 operation allowlist까지 .NET 8 코드로 정리해 권한 경계를 좁히는 지침을 ...
-
Windows 앱의 기밀 정보 저장 - DPAPI로 평문 설정 피하기
Windows 데스크톱 앱에서 자격 증명이나 토큰을 평문 설정 파일에 두지 않기 위한 현실적인 설계를 정리합니다. DPAPI/ProtectedData의 사고 방식, CurrentUser와 LocalMachine의 차이, 로그 누출 회피까지 실무 관점에서 설명합니다.
-
.NET Framework를 .NET으로 이행하기 전에 확인해야 할 것 - 착수 전에 승부가 결정되는 실천 체크리스트
.NET Framework에서 .NET으로 이행하기 전에 프로젝트 종류, 비대응 기술, NuGet 의존성, SDK 스타일, WPF/WinForms, CI/CD, 운영을 확인하는 실무 체크리스트입니다.
-
Media Foundation에서 YUV 프레임을 RGB로 변환하는 방법 - Source Reader의 자동 변환과 직접 변환을 원리부터 정리
Media Foundation에서 NV12·YUY2 같은 YUV 프레임을 RGB로 옮기는 두 가지 길을 정리합니다. Source Reader의 자동 RGB32 변환과 직접 변환을 색공간·서브샘플링·stride 관점에서 비교하고 BT.601/709, range의 함정까지 짚습니다.
-
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 동영상의 지정 시각에서 정지 이미지를 뽑는 방법 - .cpp에 그대로 붙일 수 있는 1파일 완결판
Media Foundation의 Source Reader로 MP4의 지정 시각에 가까운 프레임을 PNG로 꺼내는 흐름과, seek 어긋남·sample NULL·stride·RGB32 4바이트째의 함정을 정리하고, C++ 콘솔 앱용 1파일 완결 코드까지 둔 실무 가이드입니다.
-
Windows 앱 개발에서 최저한의 보안을 지키기 위한 체크리스트
WPF / WinForms / WinUI / C++ / C# 업무 앱에서 권한, 서명, 업데이트, 비밀 정보, HTTPS, 입력 검증, DLL 읽기, 로그의 기본을 체크리스트 형태로 정리합니다.
-
COM / ActiveX / OCX란 무엇인가 - 차이와 관계를 정리해서 해설
Windows 레거시 프로젝트에서 자주 마주치는 COM과 ActiveX, OCX의 차이를 토대·부품·파일이라는 축으로 정리해, regsvr32와 32/64bit, IE 모드 같은 키워드를 만났을 때 헷갈리지 않고 조사와 이전 방침을 잡을 수 있도록 실무 관점에서 안내합니다.
-
C#을 Native AOT로 네이티브 DLL로 만드는 방법 - UnmanagedCallersOnly로 C/C++에서 호출하기
C# 클래스 라이브러리를 Native AOT로 네이티브 DLL로 발행하고, UnmanagedCallersOnly 엔트리 포인트를 C/C++에서 호출하는 구성을 활용 시점·구현 패턴·주의점 관점에서 정리합니다.
-
Generic Host / BackgroundService를 데스크톱 앱에 가지고 들어오는 이유 - 기동·수명·graceful shutdown의 정리가 꽤 편해진다
Windows 도구나 상주 앱에서 기동, 정기 처리, 종료 처리, 로그, 설정, DI를 정리하기 위해 Generic Host와 BackgroundService를 어떻게 활용할지 정리합니다.
-
ActiveX / OCX를 지금 어떻게 다룰 것인가 - 남길지·감쌀지·교체할지 판단표
ActiveX / OCX 자산을 만났을 때 무작정 폐기하지 말고, 그 부품이 무엇을 떠맡고 있는지를 기준으로 남길지·감쌀지·교체할지를 32bit / 64bit, 등록 방식, 브라우저 의존, 벤더 보수까지 함께 따져 판단하는 표를 정리합니다.
-
Application Verifier로 만드는 Windows 비정상 경로 테스트 기반
Application Verifier가 무엇인지, Handles, Heaps, Low Resource Simulation, !htrace를 사용한 Windows의 비정상 경로 테스트 기반 구축과 함께 정리합니다.
-
산업용 카메라 제어 앱이 1개월 뒤에 갑자기 떨어질 때(전편) - 핸들 누수의 발견 방법과 장기 가동용 로그 설계
Windows 산업용 카메라 제어 앱이 약 한 달 연속 가동 후에 떨어지는 사례를 통해, 핸들 누수의 발견 절차와 Handle Count 관측, create/close 쌍을 추적하는 로그 설계, 단시간에 재현하는 실패 경로 테스트의 진행 방식을 정리합니다.
-
TCP 재전송으로 산업용 카메라 통신이 수 초 멈출 때 - RFC1323 타임스탬프와 재전송 대기의 구분
TCP 재전송으로 산업용 카메라 통신이 수 초 멈추는 원인을 패킷 로스, RTO, RFC1323 타임스탬프, Wireshark 확인 포인트와 함께 정리합니다.
-
FileSystemWatcher 사용법과 주의점 - 누락, 중복 알림, 완료 판정의 함정
Windows .NET 파일 감시에서 FileSystemWatcher의 이벤트를 완료 알림으로 오인하기 쉬운 함정과, 재스캔 요청·원자적 claim·idempotency를 축으로 누락과 중복을 견디는 안전한 설계 패턴을 정리합니다.
-
Media Foundation이란 무엇인가 - COM과 Windows 미디어 API의 얼굴이 보이는 이유
Media Foundation이 무엇인지를 COM, HRESULT, IMFSourceReader, MFT 등 Windows 미디어 API의 기본 용어와 함께, 가장 먼저 짚어야 할 순서로 정리합니다.
-
Windows 소프트 리얼타임 실전 가이드 - 지연을 줄이기 위한 체크리스트
평범한 Windows 10/11 위에서 user-mode 앱의 지연과 지터를 줄이는 실전 지침을 정리합니다. fast/slow path 분리, 큐와 타이머 설계, 우선순위·MMCSS, 전원 설정, p99 계측까지 어디부터 재검토할지 체크리스트로 보여드립니다.
-
파일 연계의 배타 제어 기초 지식 - 파일 락과 원자적 claim의 베스트 프랙티스
공유 폴더 파일 연계의 배타 제어를 정리합니다. 파일 락만으로 부족한 이유, 원자적 claim과 temp -> rename, idempotency를 조합해 다중 워커 경합과 쓰기 도중 읽기 사고를 막는 받아넘기기 프로토콜의 설계 지침을 정리했습니다.
-
C#에서 네이티브 DLL을 쓴다면 C++/CLI 래퍼가 유력한 이유 - P/Invoke와 비교해 정리
C#에서 네이티브 DLL을 호출할 때 P/Invoke로 충분한 단순 C API 케이스와, 클래스·소유권·예외·std::wstring 같은 C++ 사정이 얽혀 C++/CLI 래퍼가 유효해지는 경계를 비교 정리하고 단계적 이행 관점까지 짚어 줍니다.
-
COM STA/MTA 기초 - 스레드 모델과 행(hang)을 피하는 사고방식
COM의 STA/MTA를 Apartment 모델 관점에서 정리하고, UI 스레드가 STA인 이유와 메시지 펌프 부재가 데드락을 부르는 메커니즘, 마샬링 오버헤드의 기준값까지 그림과 함께 짚어 행을 피하는 설계 감각을 익힐 수 있도록 돕는 입문 가이드입니다.
-
32bit 앱에서 64bit DLL을 호출하는 방법 - COM 브리지가 도움이 되는 케이스 스터디
32bit 앱에서 64bit DLL을 직접 로드할 수 없는 Windows 제약을, Out-of-proc COM(EXE) 서버로 우회하는 발상을 시퀀스 다이어그램과 C# 샘플로 따라가며, 마샬링과 IPC 비용까지 한 번에 정리해 드립니다.
-
COM이란 무엇인가 - Windows COM 설계가 지금도 아름다운 이유
Windows의 COM이 무엇이고 왜 지금도 중요한지, 인터페이스 중심 설계, IUnknown, GUID, 바이너리 호환성, 프로세스 경계를 넘는 재사용이라는 관점으로 정리하여 레거시 자산 활용과 현대적 Windows 개발에서 COM 설계 철학을 이해하는 출발점을 제공합니다.