簡體   English   中英

從WINAPI獲取文件的早期版本

[英]Get file's Previous Versions, from WINAPI

在Windows 7中,有可能獲得文件的先前版本,如下圖所示:

有沒有辦法按代碼檢索文件的先前版本? 因為我找不到任何API。

在此輸入圖像描述

謝謝先進! =]

此問題列出了幾個標簽。 因此不清楚是否需要嚴格的c / c ++方法,或者腳本等是否有效。 任何狀況之下...

以下是一些有希望指向正確方向的鏈接:

經過一番搜索,感謝@ryyker和@Ben的指示,我找到了答案:

例如,對於file:C:\\ SomeFolder \\ SomeFile.exe

從cmd(以管理員身份運行):

vssadmin list shadows for=C:\

對於程序化解決方案,您可以運行它:

CreateProcessW(NULL,L"cmd.exe /c \"vssadmin list shadows for=C:\\ > C:\\someTmpFile.txt\"",...);

讀取並解析創建的文件。

在此輸入圖像描述

在上面,您將獲得卷影副本列表(“早期版本”容器的種類)。

請參閱相應的“卷影復制卷”行(您需要的版本)並在卷名后附加剩余的文件路徑:

\\ Previous version path =  \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\SomeFolder\SomeFile.exe"
wchar_t* prevPath = L"\\\\?\\GLOBALROOT\\Device\\HarddiskVolumeShadowCopy3\\SomeFolder\\SomeFile.exe";

現在,您可以使用眾所周知的WIN32API函數CreateFile和ReadFile來讀取該文件。 (從MSDN創建和讀取文件示例: 示例

確保使用該函數的UNICODE版本,因為ASCII版本可能缺少對“\\?\\”路徑的支持。

祝好運! =]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM