我在64位Windows 7上运行。 我想获得与某些NTFS系统文件关联的FileID。其中一些(“$ Mft”,“$ MftMirr”)我可以打开,但其他人(“$ LogFile”和“$ Bitmap”)因“访问被拒绝”错误或无效参数(“$ Volume”)而失败。 我曾尝试以管理员身份执行此操作并作为本地服务运行,但它们仍然失败。 我使用以下内容:
/* open the file for checking the File ID */
h = CreateFileW (
argv[i] , // _In_ LPCTSTR lpFileName,
FILE_READ_ATTRIBUTES , // _In_ DWORD dwDesiredAccess,
FILE_SHARE_DELETE |
FILE_SHARE_READ |
FILE_SHARE_WRITE , // _In_ DWORD dwShareMode,
NULL , // _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
OPEN_EXISTING , // _In_ DWORD dwCreationDisposition,
FILE_ATTRIBUTE_NORMAL| FILE_FLAG_BACKUP_SEMANTICS, // _In_ DWORD dwFlagsAndAttributes,
NULL // _In_opt_ HANDLE hTemplateFile
);
if (h == INVALID_HANDLE_VALUE) {
err = GetLastError();
wprintf(L"Can't open: '%s'. err:%u(0x%x)\n", argv[i], err, err);
continue;
}
我也确实设置了以下权限(我知道这是一种矫枉过正但我不知道哪个可行):SE_TCB_NAME,SE_DEBUG_NAME,SE_SECURITY_NAME,SE_BACKUP_NAME,SE_RESTORE_NAME,SE_MANAGE_VOLUME_NAME
答案 0 :(得分:1)
您可以使用此处提到的fget或ntfscopy: http://blog.opensecurityresearch.com/2011/10/how-to-acquire-locked-files-from.html