繁体   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