RmGetList始终返回0x5 ERROR_ACCESS_DNIED

时间:2015-02-13 07:40:52

标签: winapi

我可以从5始终获得RmGetList的返回值,原因可能是什么?

我正在关注本教程:http://blogs.msdn.com/b/oldnewthing/archive/2012/02/17/10268840.aspx

我的RmStartSessionRmRegstierResources都返回0,这意味着成功。但请注意,在RmStartSession之后dwSession始终为0,而​​我的szSessionKey保持字符串形式为0ea790d06656a54f84645b5755f7b6d6 null终止。这是一个问题吗?

我的代码是js-ctypes所以我不愿意在winapi中分享这个但是分享它:https://github.com/Noitidart/_scratchpad/blob/master/_WinAPI-RstrtMgr.js#L293

编辑:我了解到dwSession为0是有效的。但是,我仍然无法弄清楚为什么我在RmGetList上获得访问被拒绝,任何人都有任何想法?

2 个答案:

答案 0 :(得分:2)

如果文件系统填充程序之类的更高级别的内容阻止文件,RmGetList将返回错误5 无论Windows内核还是用户代码尝试访问该文件,驱动程序过滤器都拒绝从任何进程和功能访问文件xxx 它与重新启动管理器相同,重新启动管理器尝试访问该文件,驱动程序抛出错误5,重新启动管理器不知道如何处理该文件,然后将其重新返回给调用函数,因此您将获得拒绝访问< / p>

如果您尝试对Windows卷中的所有文件进行尝试,则会有很多文件抛出5错误,包括3rd parity防病毒文件或ms防御程序或...

只需使用try catch并忽略它们,因为即使您知道pid锁定了它们,您也无法对其进行任何操作,除了观看

如果您甚至没有读取锁定文件的权限,也会发生这种情况,在这种情况下,请尝试修复安全问题并重试

答案 1 :(得分:1)

我们了解到重启管理器不支持文件夹,当您尝试传递文件夹时会返回错误5: https://blog.yaakov.online/failed-experiment-what-processes-have-a-lock-on-this-folder/

更新:这里有一些如何使用重启管理器API的示例代码: https://github.com/Microsoft/msbuild/blob/master/src/Tasks/LockCheck.cs