「Windows 開發」標籤的文章
帶有「Windows 開發」標籤的文章共 88 篇,依發布日期由新到舊排列。
-
快速啟動的真面目 ── 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 四種物件、清理群組,以及回呼裡禁止做的事。
-
具名管道實務 ── 從設計到安全,看懂 Windows 行程間通訊的標準做法
以實務角度說明 Windows 行程間通訊的標準做法——具名管道。依據一手資料整理位元組模式與訊息模式的取捨、同時接受多個用戶端的伺服器結構、ACL 與模擬的安全設計,以及 .NET 的具名管道串流。
-
從睡眠恢復就壞掉的應用程式 ── 電源事件的機制,以及耐得住恢復的業務應用程式寫法
打開筆電,業務應用程式的連線卻斷了──原因是設計從未把睡眠算進去。本文依一次資訊整理 WM_POWERBROADCAST 的通知流程、Modern Standby 的行為、斷線/重連設計、睡眠抑制,以及調查指令。
-
DllMain 與載入器鎖定 ── 「DLL 初始化時什麼都別做」真正的理由
為什麼不能在 DllMain 裡呼叫 LoadLibrary 或與其他執行緒同步?本文依據一次資料,從序列化所有 DLL 通知的載入器鎖定機制,一路說明到死結成立的典型情境、延遲初始化等正確設計,以及無回應的調查步驟。
-
「沒有回應」的真面目 ── Windows 如何判定應用程式卡住,以及不卡住的設計
Windows 的「沒有回應」,是視窗 5 秒沒有取出訊息時由作業系統判定、並換成幽靈視窗的機制。本文從判定的內部運作,講到卡住的經典原因、把重工作移出 UI 執行緒的設計,以及無回應的調查程序。
-
剪貼簿與拖放的運作方式 ── 在業務應用程式中正確處理 OLE 資料傳輸
貼上 Excel 表格就散掉、關掉複製來源就貼不上──真正的原因,是剪貼簿把同一份內容以多種格式同時放上。本文從標準格式、延遲轉譯、OLE 拖放,一路談到剪貼簿歷程與雲端同步的原則。
-
WPR/WPA 實務 ── 從系統整體調查「整台 PC 變慢」的效能調查入門
「整台 PC 變慢」「開機很慢」這類工作管理員追不到的效能問題,可以用擷取並閱讀整個 OS 的 ETW 追蹤的 WPR/WPA 來調查。本文從 wpr.exe 的擷取步驟,一路說明到在 WPA 裡怎麼讀 CPU、等待時間與磁碟 I/O。
-
從應用程式看 Windows 關機 ── 正確扛住結束通知、重新啟動與斷電
夜間 Windows Update 重新啟動把量測資料弄壞了──這類事故可以用設計預防。本文依一次資訊說明 WM_QUERYENDSESSION 與 PRESHUTDOWN 等結束通知的接法、幾秒內做完的收尾,以及耐得住斷電的儲存設計。
-
Windows 應用程式相容的運作機制 ── 以相容模式、Shim 與 Compatibility Administrator 延續舊應用程式
為什麼勾選相容模式之後舊應用程式就跑得動。本文說明其本體 Shim(API 攔截)的機制、代表性 Shim 的作用、用 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 虛擬記憶體與實體記憶體的關係、分頁檔的角色,以及在記憶體不足或洩漏調查時應該檢視的指標。
-
在 C# 與 PowerShell 中使用 WMI/CIM ── 硬體資訊取得、處理程序監控、遠端查詢實務指南
取得 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。並以實務角度整理是否需要安裝驅動程式、多台連接時的識別方式、如何追蹤拔插,以及效能上限。
-
ADR(Architecture Decision Record)入門 ── 在小規模開發中留下「為何採用此設計」的最小做法
程式碼不會說明「為什麼這樣做」。本文說明如何用ADR(Architecture Decision Record)以「1個決定=1個檔案」的Markdown留下設計判斷的理由,並附上範本、該寫/不該寫的判斷表與實例。
-
為業務應用程式的 DB 結構做版本管理 ── 防止「各客戶端 DB 不一致」的遷移實踐
為分散在各客戶端的業務應用程式 DB 結構做版本管理的實務指南。整理 PRAGMA user_version 與前進遷移的 C# 實作、EF Core Migrations・DbUp・自行實作的判斷表,一直到兩階段發佈。
-
WinForms / WPF 應用程式的 CI/CD 實務 ── 用 GitHub Actions 把從建置到簽章・發布全部自動化
本文整理用 GitHub Actions 為 WinForms / WPF 應用程式建置 CI/CD 的實務指南,內容涵蓋在 windows-latest 上進行建置+測試的最小 YAML、以標籤驅動的版本編號、透過 signtool 整合簽章,以及依 MSI/MSIX/ClickOnce/xcopy 分類的 C...
-
自行開發的 Windows 應用程式被當成病毒處理時 ── Microsoft Defender 誤判的因應方式,以及與效能影響的相處之道
整理自行開發的 Windows 應用程式被 Microsoft Defender 誤判時的正規因應方式。從現代防毒機制的原理、向 Microsoft 回報誤判、從隔離還原,到排除設定的正確做法與風險,一併解說。
-
睡眠・休眠・Modern Standby 與長時間執行的應用程式 ── 用設計預防「半夜停止運轉」
本文將從 S3 睡眠、休眠、Modern Standby 的差異出發,整理長時間執行的 Windows 應用程式「早上一看才發現已經停止」的原因,並解說睡眠期間計時器與 TCP 連線的行為,以及透過 SetThreadExecutionState 進行抑止的做法。
-
Arm 版 Windows 能執行業務應用程式嗎 ── x64 模擬(Prism)與原生 DLL・COM 的現實
本文為開發者・資訊系統部門解答「Arm 版 Windows 能執行業務應用程式嗎」這個問題,整理 x64 模擬(Prism)的運作原理、驅動程式等無法執行的層級、.NET 的 AnyCPU 與 P/Invoke 問題,以及 Arm 對應檢查清單。
-
接手了沒有原始碼也沒有規格書的系統 ── 不停機維運的實務步驟
本文整理著手維運沒有原始碼、也沒有規格書之業務系統的實務步驟,內容涵蓋現行環境的保全與備份、執行檔・資料庫的盤點、從行為復原規格,以及延命・包裝・重建的判斷。
-
MAX_PATH 與 Windows 路徑・檔案名稱的陷阱 ── 260 字元限制、保留名稱、結尾句點、大小寫
本文整理「找不到檔案」這類問題的常見原因──路徑與檔案名稱的限制。內容涵蓋 MAX_PATH=260 字元的組成、透過 LongPathsEnabled 啟用長路徑、CON 等保留名稱、結尾句點的正規化,直到 Path.Combine 的陷阱。
-
網路磁碟機與 UNC 路徑的陷阱 ── 業務應用程式處理檔案伺服器(共用資料夾)的實務
整理業務應用程式對共用資料夾進行輸出・監控時常見的麻煩。說明磁碟機代號(Z:)為何無法從服務中看到、各執行帳戶所需的權限、錯誤 1219,以及 FileSystemWatcher 的注意事項。
-
Windows 應用程式的工作列通知區常駐與 Toast 通知 —— NotifyIcon 的陷阱與 AppNotification 的選型
本文整理將業務用 Windows 應用程式常駐於工作列通知區,並透過 Toast 通知告知使用者的實作要點。內容涵蓋 NotifyIcon 的正確用法與「關閉後仍留在通知區」的設計、檔案總管重新啟動時的重新註冊、三種 Toast API(Windows App SDK AppNotification / Comm...
-
VB6 應用程式能用到什麼時候 ── 執行環境的支援現況與務實的 .NET 遷移做法
VB6 應用程式究竟能用到什麼時候?本文整理 VB6 執行環境的支援政策(Windows 11 也在支援範圍內)與 IDE 支援早已終止這種不對稱現況,並以實務指南的形式,說明全面重寫、自動轉換、階段性遷移的判斷表、遷移前的資產盤點、VB6 與 .NET 的不相容之處,以及 C# 與 VB.NET 的選擇。
-
業務應用程式的日本年號・國定假日・結算日處理 ── 抗改元設計與 JapaneseCalendar・營業日計算實務
報表要顯示「令和8年」、營業日計算要排除國定假日、20日結算次月底付款──日本業務應用程式特有的日期處理,背後藏著「日後會變動的規格」:改元、國定假日的法規修訂、月底的進位。本文整理以 JapaneseCalendar 顯示年號、抗改元的設計方式,國定假日不可寫死在程式碼中的原因,以及運用內閣府 CSV 建立國定...
-
Process Monitor(ProcMon)實戰指南 ── 在10分鐘內找出「設定未被讀取」「ACCESS DENIED」的原因
「明明已經修改了設定檔,卻沒有生效」「昨天還能正常運作,今天卻無法啟動」──在動手修改原始碼之前,Process Monitor(ProcMon)能從檔案、登錄檔存取的實際情況中找出原因。本文從不具調查現場的角度,解說 Filter 的實務用法、NAME NOT FOUND、ACCESS DENIED、SHARI...
-
WinForms/WPF 應用程式的多語言化 ── resx、附屬組件與文化特性切換的實務
本文從實務角度整理 Windows 桌面應用程式的多語言化,包括 CurrentCulture 與 CurrentUICulture 的差異、resx 與附屬組件(Satellite Assembly)所構成的資源機制、WinForms 的 Localizable 屬性、WPF 現實可行的方式選擇、執行時的語言切...
-
CSV不是「純文字」而已 ── C# 業務應用程式的 CSV 實務(字元編碼・Excel 相容性・注入攻擊防範)
整理業務應用程式在 CSV 讀寫時容易出事故的典型模式──用 Split(',') 自行解析、無 BOM 的 UTF-8 在 Excel 中亂碼、開頭零消失、CSV 注入攻擊──從 RFC 4180 的規則、.NET 中 Shift_JIS 的處理方式(CodePagesEncodingProvider),到用 ...
-
不要用 using 包住 HttpClient ── C# 商用應用程式的 HTTP 通訊實務(生成模式・逾時・重試)
C# 的 HttpClient 若每次都用 using 生成,會導致 Socket 枯竭;改用 static 又無法跟上 DNS 變更──本文從 Windows 商用應用程式的實務角度,整理這兩大問題的成因,以及透過 PooledConnectionLifetime、IHttpClientFactory 的正確生...
-
用 PerfView 與 dotnet-trace 找出「變慢」的原因 ── .NET 效能調查實務入門
當商用應用程式「變慢」「CPU 卡住不動」「偶爾當掉」時,該用哪個工具看什麼?本文整理 PerfView 與 dotnet-trace 的角色分工、CPU 取樣的讀法(inclusive/exclusive)、用 ThreadTime 調查阻塞時間,以及與 EventSource 自訂事件組合使用,涵蓋實務上的效...
-
Windows 事件記錄・ETW 入門 ── 讓業務應用程式的日誌搭上 OS 標準機制
Windows 業務應用程式的日誌,是不是只靠檔案日誌解決?事件記錄與 ETW,是維運人員與 OS 標準工具能看到的另一個層級的記錄。本文說明三種手段的分工、.NET 的寫入方式、透過 EventSource 進行 ETW 儀器化、收集與調查的實務,以及來源未註冊、日誌肥大化等常見陷阱。
-
不只是 appsettings.json ── Windows 商用應用程式的組態管理實務(環境別設定・機密資訊・寫入位置)
本文從實務角度整理 Windows 商用應用程式的組態管理,涵蓋 appsettings.json 的分層、IConfiguration 與 IOptions/IOptionsSnapshot/IOptionsMonitor 的選用方式、環境別設定、可寫入設定的存放位置、機密資訊的處理、執行期設定變更,以及從 a...
-
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、考量 SetForegroundWindow 限制下的既有執行...
-
委外・委託開發 Windows 應用程式前該整理的事項
在委外・委託開發 Windows 應用程式之前,整理既有軟體改版、設備整合、COM/ActiveX、發布與更新、維護等應留意的重點。
-
Windows 為什麼會出現「Windows 已保護您的電腦」
從程式碼簽章、EV/OV 憑證、Azure Artifact Signing、MSIX、Microsoft Store、ClickOnce、內部發佈到 App Control,以實務角度整理 Windows 應用程式發佈時出現 SmartScreen 警告的原因。
-
開發 COM 元件、OCX/ActiveX 時常見的坑 - 整理 Visual Studio 的 32bit/64bit、註冊、管理員權限
整理開發 COM、OCX、ActiveX 元件時最容易卡關的四個面向:宿主行程的 32bit/64bit、Visual Studio 2022 變成 64bit 後的設計時整合、regsvr32 與 Regasm 的註冊位置、以及管理員權限與 HKCU/HKLM 的關係,協助讀者快速定位問題並建立穩定的開發環境。
-
ClickOnce 是什麼 - 以實務視角整理機制、更新、適合場面・不適合場面
本文以實務視角整理 ClickOnce 是什麼,從 manifest、快取、更新、簽章的構造,到適合公司內部 .NET 桌面業務應用程式的案件與不適合 machine-wide 或 service、driver 等深度 OS 整合的案件,幫助讀者判斷是否採用並掌握 deploymentProvider 與簽章運營要點。
-
用 Windows 沙箱加速 Windows 應用程式開發的驗證 - 以實務向整理管理員權限問題、乾淨環境、權限不足・資源不足的重現
整理在 Windows 應用程式開發中如何運用 Windows Sandbox 加速驗證的實務做法。透過按情境分檔的 .wsb、唯讀輸入與專用 Outbox 寫入分離、在容器內另建標準使用者重現權限不足、以及降低記憶體和關閉 vGPU 製造資源不足偏向,把每次的乾淨環境準備變成可重複的步驟。
-
自動更新功能的安全性基本 - 糟糕的模式與最佳實踐
把自動更新當成信任的發佈而非檔案傳輸來重新整理,從只靠 HTTPS 不夠的理由、signed metadata 與用戶端驗證、簽章金鑰的運營分離、staging 與 fail-closed、rollback 與 freeze 的對策,到 Windows 上 MSIX 與 ClickOnce 的取捨,給出實務上的判...
-
無法避免自行實作 logger 時,真正必要的最小要件是什麼:實務要件與整合測試觀點
本文整理當無法使用既成 logging framework、必須自行實作應用程式日誌時,第一版該守住的最小要件,包含 UTF-8 JSON Lines、必要欄位、一個行程一個檔案、flush 條件、輪轉與保留,並列出以真實檔案、執行緒、行程驗證的整合測試清單,協助讀者打造在出事時也敢相信的 logger。
-
哪些應該用單元測試驗證,哪些該留給整合測試 - 切界線的方法與實務判斷表
本文以「想消弭哪種不確定性」為主軸,整理單元測試與整合測試該各自承擔什麼。從純邏輯、格式、接線、環境、時間五個切面歸納成判斷表,並列出 Repository 全 mock、Controller 連框架一起驗等常見誤區,幫讀者在實務上不再為界線猶豫。
-
Windows 的 DLL 名稱解析機制 - 以實務角度整理搜尋順序、Known DLLs、API set、SxS
從實務角度整理 Windows 的 DLL 名稱解析,說明 loader 在掃描檔案系統前會先處理 DLL redirection、API set、SxS、Known DLLs,並用 SetDefaultDllDirectories 與 LoadLibraryEx 旗標縮小搜尋範圍以避開 hijacking 風險。
-
Windows 什麼時候需要系統管理員權限 - UAC、保護區、設計上的分辨方式
從邊界與儲存位置的角度,整理 Windows 何時真正需要系統管理員權限:UAC、保護區、HKLM、服務、驅動、防火牆。同時說明 per-user 與 per-machine 的差異,以及把管理員處理切成獨立 EXE、服務或工作的設計取捨,幫讀者判斷該不該提權。
-
什麼是 VBA - 限制、未來走向、該被取代的情境與務實的遷移模式
本文從實務角度釐清 VBA 的本質、桌面前提的限制、Excel for the web 與巨集封鎖、64bit 與伺服器自動化的注意事項,並依職責分派 Office Scripts、Office Add-ins、.NET 外移等替代目標,提示階段性遷移的具體步驟。
-
序列通訊應用程式的陷阱 - 從重連到日誌設計
以實務角度梳理設備介接與量測儀器控制中應該避開的序列通訊應用程式陷阱,涵蓋訊框切分、逾時、RTS/CTS、DTR/RTS、重連以及日誌設計。
-
Windows 應用程式當機時留下日誌與傾印的設計
為了讓 Windows 應用程式因非預期的例外或程式錯誤而當掉之後,仍留下能追查原因的佐證資料,本文梳理一般日誌、最終當機標記、WER LocalDumps 與監控處理程序應該如何搭配。
-
Windows 應用程式 UX 設計 - 依使用環境決定優先順序
把 Windows 應用程式的 UX 設計該優先什麼,依 BtoC / BtoB、輸入方式、使用環境與誤操作成本,整理成一張判斷表。
-
WinForms/WPF/WinUI 的選法 - 實務判斷表
從新專案開發、既有資產、散發、UI 表現、團隊體制這幾個觀點,梳理 WinForms、WPF、WinUI 到底該選哪一個。
-
共用記憶體的陷阱與實務最佳實踐
梳理實務上使用共用記憶體時的陷阱,以及涵蓋同步、可見性、生命週期、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 的分工,以及單一檔案完結的 C++ 範例來說明。
-
Windows 當機傾印收集入門 - WER/ProcDump/WinDbg
為了追查難以重現的 Windows 應用程式當機,本文梳理 WER LocalDumps、ProcDump、MiniDumpWriteDump 與 WinDbg 的取捨,以及維運上要注意的地方。
-
Windows 上應優先採用事件等待而非 Sleep(1) 的理由
在 Windows 上,短時間 timed wait 的精度會受 system clock 粒度與排程的影響。本文梳理在等待工作抵達、I/O 完成或停止請求時,為什麼應該改用事件驅動,而不是每隔一段時間輪詢。
-
非預期例外發生時該結束還是繼續執行的判斷表
發生非預期的例外時,應該讓應用程式結束還是繼續執行?本文從狀態毀損、外部副作用、執行緒與原生邊界的角度梳理判斷方式。
-
在 Windows 應用程式中只分離「需要系統管理員權限的處理」的具體寫法
在 Windows 應用程式中讓 UI 維持 asInvoker,只把需要系統管理員權限的處理分離到 helper EXE。本文把這套設計連同 UAC、runas、具名管道、輸入驗證一起具體梳理清楚。
-
Windows 應用程式的機密資訊保存 - 用 DPAPI 避免明文設定
為了不讓 Windows 應用程式把連線資訊或 API 權杖以明文存進設定檔,本文梳理 DPAPI / ProtectedData 的思路、CurrentUser 與 LocalMachine 的差異,以及實作時的注意事項。
-
從 .NET Framework 遷移到 .NET 的著手前檢核表
從 .NET Framework 遷移到 .NET 之前,用來檢查專案種類、尚未支援的技術、NuGet 相依性、SDK 樣式、WPF/WinForms、CI/CD 與維運的實務檢核表。
-
在 Media Foundation 中把 YUV 轉換成 RGB 的方法
本文從 Source Reader 的自動轉換、NV12/YUY2 的自行轉換、stride 與色彩空間,梳理在 Media Foundation 中把 YUV 影格轉換成 RGB 的方法。
-
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/C++ 呼叫 C# Native AOT DLL 的方法
本文說明如何以 Native AOT 把 C# 的類別庫發行成原生 DLL,並從 C/C++ 呼叫 UnmanagedCallersOnly 的進入點,從適用時機、實作模式與注意事項梳理這套構成。
-
在桌面應用程式使用 .NET Generic Host 與 BackgroundService 的理由
為了在 Windows 工具與常駐型應用程式中梳理啟動、定期處理、終止處理、日誌、設定與 DI,本文整理 Generic Host 與 BackgroundService 該怎麼用。
-
ActiveX / OCX 現在該怎麼處理 - 保留、包裝、取代的判斷表
整理發現 ActiveX / OCX 時該選保留、包裝還是取代,把 32 位元與 64 位元、註冊、瀏覽器相依性以至於廠商維護都一起納入判斷。
-
用 Application Verifier 打造 Windows 異常情境測試基礎架構
本文梳理 Application Verifier 是什麼,並一併說明如何用 Handles、Heaps、Low Resource Simulation 與 !htrace 打造 Windows 的異常情境測試基礎架構。
-
工業相機長期運轉當機調查 - 控制代碼洩漏篇
本文以工業相機控制應用程式的案例,從找出控制代碼洩漏與日誌設計這兩個角度,梳理 Windows 應用程式長時間運轉後突然當掉時該怎麼看。
-
TCP 重送導致工業相機通訊停頓的原因與釐清方法
本文梳理工業相機通訊因 TCP 重送而停頓數秒時的釐清方法,並一併說明封包遺失、RTO、RFC1323 timestamp 與 Wireshark 的檢查重點。
-
FileSystemWatcher 實務指南 - 漏掉通知與重複通知的對策
從漏掉通知、重複通知、完成判定的陷阱、重新掃描、原子性 claim、idempotency 等角度,梳理 FileSystemWatcher 的用法與注意事項。
-
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 時,本文以所有權、例外、C++ 型別、回呼等角度,分辨 P/Invoke 就夠用的場合與 C++/CLI 包裝層才派得上用場的場合,並梳理插一層薄包裝層的好處。
-
COM STA/MTA 基礎知識 - 執行緒模型與避免停止回應的思考方式
本文梳理 COM STA/MTA 的基礎知識,涵蓋 Apartment Model、UI 執行緒、訊息迴圈、封送處理,以及避免停止回應的思考方式。
-
從 32bit 應用呼叫 64bit DLL 的 COM 橋接案例
當 32bit 應用無法直接呼叫 64bit DLL 時,本文梳理以 COM 橋接串接兩者的思路,並一併說明 Windows 的限制、架構與處理流程。
-
什麼是 COM - Windows COM 的設計為何至今依然優美
從 Windows COM 的介面設計、IUnknown、GUID 與二進位相容性的角度梳理什麼是 COM,並說明它至今仍然適用的理由。