首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Windows 檔案與登錄操作 API 全方位參考手冊

     編輯:關於C++

核心分類架構

Win32 檔案系統 API 橫跨檔案/目錄管理、檔案 I/O、記憶體映射檔案、壓縮檔案、臨時檔案、磁碟資訊、檔案屬性/時間、版本資源、INI/登錄操作、檔案搜尋、路徑處理 等領域。本文依功能域系統整理,並標註關鍵使用情境與遷移建議。

一、檔案與目錄基礎操作

API功能備註/現代替代
CreateFile建立/開啟檔案、管道、通訊埠、裝置核心 API,dwCreationDisposition 控制建立/開啟/覆寫/截斷語意
CloseHandle關閉核心物件 (檔案、對應、程序、執行緒、同步物件)通用關閉函數,必配對使用
ReadFile/WriteFile同步讀寫搭配 OVERLAPPED 可非同步
ReadFileEx/WriteFileEx非同步讀寫 + 完成常式僅支援非同步,需警示狀態執行緒
SetFilePointer/SetFilePointerEx移動檔案指標Ex 版支援 64-bit 位移
SetEndOfFile截斷/擴展檔案至目前指標
FlushFileBuffers強制寫入磁碟效能成本高,謹慎使用
CopyFile/CopyFileEx複製檔案Ex 版支援進度回呼、可取消
MoveFile/MoveFileEx移動/重命名 (跨磁碟自動複製+刪除)Ex 版支援延遲至重開機、覆寫唯讀
DeleteFile刪除檔案目錄用 RemoveDirectory
CreateDirectory/CreateDirectoryEx建立目錄 (可指定安全性/模板)
RemoveDirectory刪除空目錄

二、檔案屬性、時間與資訊查詢

API功能
GetFileAttributes/SetFileAttributes取得/設定屬性 (唯讀、隱藏、系統、壓縮、加密、離線等)
GetFileTime/SetFileTime建立/最後存取/最後寫入時間 (FILETIME 結構,UTC)
GetFileSize/GetFileSizeEx取得檔案大小 (Ex 支援 64-bit)
GetFileInformationByHandle一次取得屬性、時間、大小、連結數、檔案索引等完整資訊
GetFileType判斷檔案類型 (磁碟/字元/管道/遠端)
GetCompressedFileSize取得壓縮檔實際磁碟佔用大小
GetBinaryType判斷是否可執行檔及子系統類型

時間格式轉換

API轉換方向
FileTimeToSystemTime / SystemTimeToFileTimeFILETIME (UTC, 100ns) ↔ SYSTEMTIME (年月日時分秒毫秒)
FileTimeToLocalFileTime / LocalFileTimeToFileTimeUTC FILETIME ↔ 本地時間 FILETIME
DosDateTimeToFileTime / FileTimeToDosDateTimeDOS 日期/時間 (16-bit) ↔ FILETIME

三、進階 I/O 與鎖定機制

API功能
LockFile/LockFileEx鎖定檔案區塊 (Ex 支援共享/獨佔、非阻塞、長度 64-bit)
UnlockFile/UnlockFileEx解除鎖定
DeviceIoControl裝置控制碼 (IOCTL) 直接控制驅動程式/檔案系統
GetOverlappedResult查詢非同步作業完成狀態

四、記憶體映射檔案 (共享記憶體/大檔案高效存取)

步驟API說明
1. 建立/開啟映射物件CreateFileMapping / OpenFileMapping指定分頁檔或現有檔案、大小、保護屬性、名稱 (跨程序共享)
2. 映射視圖至位址空間MapViewOfFile / MapViewOfFileEx指定位移、大小、存取權限,傳回基底位址
3. 直接操作記憶體—指標讀寫,系統自動分頁管理
4. 釋放視圖UnmapViewOfFile
5. 關閉映射物件CloseHandle
同步寫入磁碟FlushViewOfFile指定基底位址與長度

五、目錄與磁碟管理

API功能
GetCurrentDirectory/SetCurrentDirectory進程目前工作目錄
GetLogicalDrives/GetLogicalDriveStrings列舉磁碟機代號
GetDriveType判斷磁碟類型 (可移除/固定/網路/CD-ROM/RAM)
GetDiskFreeSpace/GetDiskFreeSpaceEx取得磁碟空間資訊 (Ex 支援 64-bit、NTFS 壓縮/配額)
GetVolumeInformation磁碟卷標、序號、檔案系統、旗標 (支援長檔名、壓縮、加密、配額等)
SetVolumeLabel設定磁碟卷標

六、檔案搜尋與路徑處理

API功能
FindFirstFile/FindFirstFileEx開始搜尋 (Ex 支援大檔案、層級搜尋、屬性過濾)
FindNextFile繼續搜尋
FindClose關閉搜尋控制代碼
SearchPath在 PATH 環境變數中尋找檔案
GetFullPathName相對路徑轉絕對路徑
GetShortPathName/GetLongPathName8.3 短檔名 ↔ 長檔名轉換
GetTempPath/GetTempFileName取得/建立臨時檔案路徑
GetSystemDirectory/GetWindowsDirectory取得系統/Windows 目錄

七、壓縮檔案操作 (LZ 系列 — 舊版相容)

注意:LZ 系列 (LZOpenFile, LZRead, LZSeek, LZClose, LZCopy, LZInit) 為 16-bit 相容層,現代開發請改用 Zlib、LZMA SDK 或 Windows Compress API (CreateCompressor 等)。

八、檔案版本資源

API功能
GetFileVersionInfoSize取得版本資源緩衝區大小
GetFileVersionInfo擷取版本資源至緩衝區
VerQueryValue從版本資源查詢特定值 (字串表、固定資訊、翻譯資訊)
VerFindFile/VerInstallFile安裝程式判斷檔案目的地/執行安裝
VerLanguageName語言代碼轉語言名稱

九、INI 檔案操作 (傳統 — 建議改用登錄/XML/JSON)

範圍讀取寫入
系統 win.iniGetProfileInt/GetProfileString/GetProfileSectionWriteProfileString/WriteProfileSection
應用程式 .iniGetPrivateProfileInt/GetPrivateProfileString/GetPrivateProfileSectionWritePrivateProfileString/WritePrivateProfileSection

十、登錄操作 — 系統設定核心儲存

鍵值管理

API功能建議版本
開啟/建立鍵RegOpenKeyEx/RegCreateKeyExEx 版 (支援安全性、選項、Disposition 回傳)
關閉鍵RegCloseKey
刪除鍵/值RegDeleteKey/RegDeleteValue
列舉子鍵/值RegEnumKeyEx/RegEnumValueEx 版 (支援類別名稱、時間戳)
查詢/設定值RegQueryValueEx/RegSetValueEx支援多種資料型別 (REG_SZ, REG_DWORD, REG_BINARY, REG_MULTI_SZ, REG_EXPAND_SZ...)
查詢鍵資訊RegQueryInfoKey子鍵數、值數、最大名稱/資料長度、最後寫入時間、安全性描述項

進階登錄功能

API功能
RegConnectRegistry連線遠端電腦登錄
RegFlushKey強制寫入磁碟 (通常不需呼叫)
RegSaveKey/RegRestoreKey/RegReplaceKey鍵值備份/還原/替換 (需備份權限)
RegLoadKey/RegUnLoadKey載入/卸載配置單元檔案
RegNotifyChangeKeyValue非同步監視鍵值變更 (配合事件物件)
RegGetKeySecurity/RegSetKeySecurity存取控制 (ACL) 讀寫

十一、舊版檔案 I/O (16-bit 相容 — 勿用於新專案)

_lopen, _lcreat, _lread, _lwrite, _lclose, _llseek, _hread, _hwrite — 僅為相容 Win16 程式碼移植保留,功能受限 (無安全性、無 64-bit、無非同步)。

最佳實務總結

  1. 一律使用 CreateFile + ReadFile/WriteFile + CloseHandle 核心三件組
  2. 大檔案 (>4GB) 必須使用 Ex 版 API (GetFileSizeEx, SetFilePointerEx, FindFirstFileEx)
  3. 非同步 I/O:FILE_FLAG_OVERLAPPED + ReadFileEx/WriteFileEx + 完成常式 / I/O 完成埠 (IOCP)
  4. 共享記憶體/超大檔案:CreateFileMapping + MapViewOfFile — 系統自動分頁,效能最佳
  5. 登錄:僅儲存小型設定資料;大量資料請用檔案/資料庫
  6. 錯誤處理:檢查傳回值,呼叫 GetLastError 取得詳細錯誤碼
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved