在 SysInternals Handle.exe的输出中,RWD代表什么?

・3 分钟阅读

问题:

我使用 handle.exe 中的获取关于打开句柄的信息。 运行 handle.exe -p cmd 来获取 cmd.exe的句柄,我得到以下输出。 其他输出类似,只是更长。


cmd.exe pid: 22916 NT AUTHORITYSYSTEM


 3C: File (RW-) C:Windows


 7C: File (RW-) C:Program Files (x86)ManageEngineAssetExplorerbin


------------------------------------------------------------------------------


cmd.exe pid: 22264 RADHSVnsshinabarger


 3C: File (RW-) C:UsersnsshinabargerDownloadsHandle


 12C: File (R-D) C:WindowsSystem32en-UScmd.exe.mui



我假设 RW 代表读和写,但我似乎找不到关于 D 代表什么的文档。 有人能告诉我它代表什么或者指向我的文档?

谢谢!


回答 1:

这是文件句柄的共享模式 ( 参见 WIN32 API文档中 CreateFile() 下的dwShareMode ) 。

共享模式实际上与"强制锁定"相反,程序指定什么时候打开文件,其他程序是否允许同时打开它。 ( 我相信它可追溯到 MS-DOS 时代"局域网管理器"网络。 请参阅 SMB协议文档 。)

这些字母代表 read/write/delete. 。


回答 2:

免责声明:这个答案解释了Windows内核的一些深入内容。

要点:

来自 NtCreateFile()SharedAccess paramerts 。


| Name | ShareAccess | Value |


|:----:|:-----------------:|:--------:|


| R | FILE_SHARE_READ | 1 |


| W | FILE_SHARE_WRITE | 2 |


| D | FILE_SHARE_DELETE | 4 |



使用指导


if (FileObject->SharedRead)


 Mode |= 1;


if (FileObject->SharedWrite)


 Mode |= 2;


if (FileObject->SharedDelete)


 Mode |= 4;



用户模式程序将它的接收为:


FirstBit = '-';


SecondBit = '-';


if (Mode & 4)


 FirstBit = 'D';


ThirdBit = '-';


if (Mode & 2)


 ThirdBit = 'W';


if (Mode & 1)


 SecondBit = 'R';




讨论
Tony profile image