我有一个 Windows 网络,其中许多文件在具有完全控制权的许多用户之间共享。我有一个为我系统中的每个人共享的文件夹,所以每当我尝试使用另一个系统的机器名称(run->\Servername)访问它时,我可以看到共享文件夹并在其中打开/写入文件。
但我的要求是关闭网络中所有打开的文件(在我的系统中)。所以我使用NetFileEnum列出所有打开的文件 ID,以便我可以使用NetFileClose API 关闭这些文件。
但问题是 NetFileEnum 返回无效的垃圾 ID,如 111092900、-1100100090 等,因此我无法从另一台机器关闭它。所以我使用 net file 命令列出了网络打开的文件,并记下 id,比如 43 我在函数调用中硬编码了 idNetFileClose("Servername", 43);
但是当我执行时,我得到了ACCESS_DENIED_ERROR。但是,如果在服务器上运行相同的代码,它会成功关闭文件。我已经为所有用户提供了完全的共享权限。
但是为什么ACCESS_DENIED_ERROR以及为什么 NetFileEnum 返回无效的 id?要让这个 API 工作,有什么事情要做吗?如何正确使用这些 API 来关闭网络打开的文件?