OpenFileById 失败并显示ERROR_ACCESS_DENIED
OpenFileById fails with ERROR_ACCESS_DENIED
我正在开发一种产品,该产品OpenFileById()
失败,无法ERROR_ACCESS_DENIED
其他可访问的文件和文件夹(意味着CreateFile()
由具有相同访问级别/共享模式等的路径指定的同一文件或文件夹成功)。
我正在使用备份语义,所以我也可以获得文件夹的句柄; 启用SE_BACKUP_NAME
和SE_RESTORE_NAME
权限。此代码适用于除这台计算机 (Windows 8.1) 以外的其他任何地方。
该过程在本地系统下作为服务运行,我尝试让他们将其更改为具有管理员权限的其他帐户,但这也不起作用。有问题的文件/文件夹尚未打开删除(根据文档,这是此功能因ERROR_ACCESS_DENIED
而失败的一种情况)。
我没有对这台机器的物理访问权限,所以无法进行内核调试或类似的事情。以前有人遇到过这种情况吗?
简而言之,这就是我要做的:
hRoot = ::CreateFileA(szRootPath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
if (hRoot != INVALID_HANDLE_VALUE)
{
FILE_ID_DESCRIPTOR fileId;
fileId.dwSize = sizeof(fileId);
fileId.Type = FileIdType;
fileId.FileId.QuadPart = nId;
hFile = ::OpenFileById(hRoot, &fileId, SYNCHRONIZE | FILE_READ_ATTRIBUTES, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, FILE_FLAG_BACKUP_SEMANTICS);
if (hFile != INVALID_HANDLE_VALUE)
{
...
::CloseHandle(hFile);
}
::CloseHandle(hRoot);
}
显然这是由第三方软件产品的内核组件引起的(无法真正详细说明)
相关文章:
- 将数组信息存储到 c++ 向量中有一个"Access violation reading location"
- 为什么调试器引发"read access violation. this was nullptr"异常?
- 在 Microsoft Access SQL 中调用自定义 DLL 函数时传递的内存地址无效
- Simulink "Access Violation"写入 C++ lambda 函数捕获列表中的 PWork 变量
- Qt QXmlStreamReader Access Violation
- "Access is Denied" U盘上的创建文件()
- 指向 std::unrodered_map 中元素的指针返回'Read access violation'
- 例外:'Access violation reading location'
- 向量数组"Cannot access memory at address"
- Windeployqt不会运行,"Access is denied."
- 我在发布模式下运行时收到"Access violation reading location"错误 - C++
- 获取交汇点的目标路径似乎总是以"Error 5 Access Denied"结尾
- 从 UMDF 驱动程序调用创建文件时出现'Access is denied'错误 (C++)
- 启动应用程序"Access denied" - Windows Vista
- 常见日志文件系统 API 的 RegisterManageableLogClient() 和"access is denied"错误
- CreateMutex -- "Access is denied"
- 尝试在 Cygwin 中通过 G++ 编译程序时收到"access is denied "消息
- 增强串行通信,COM端口被拒绝并出现错误"open: access is denied"
- 为什么 LoadUserProfile() 在系统服务中运行的此代码中失败并显示错误 5 "Denied Access"?
- 如何修复 Visual Studio 2012 和 VS community 2015 中的'Access denied'错误?