windows 确定谁修改了C++中的文件窗口,可以访问ReadDirectoryChangesExW中的信息

hs1ihplo  于 2023-08-07  发布在  Windows
关注(0)|答案(1)|浏览(126)

提问

我正在使用ReadDirectoryChangesExW监视目录。我有这个代码工作正常,想知道是否有人知道一种方法来确定Windows上的哪个用户可以与给定的文件系统更改相关联(以FILE_NOTIFY_EXTENDED_INFORMATION的形式)。

方法

我最初的研究是基于查询fileid来确定最后一个接触该文件的用户--但我在MSDN上找不到太多。诚然,我可能只是没有找到相关的信息,我需要在海洋中的信息,这是MSDN。
我还研究了迭代会话和确定活动会话。我的问题是多个会话被打开的可能性是什么?我觉得假设只有一个活动会话是一个糟糕的假设,但也许它甚至适用于RDP?
我遇到的另一个问题是断开的会话没有与它们相关的真实的信息。我在我的开发机器上有两个会话,我的用户帐户(会话ID 1),我希望和会话ID没有userName与它相关联,并显示WTS_STATE::Disconnected
我发现了另一个问题,其中有人在会话0中有类似的输出:

session=0, stationName = Services
    WTSQuerySessionInformationW - session 0 - WTSInitialProgram failed - error=87 - The parameter is incorrect.

    WTSQuerySessionInformationW - session 0 - WTSApplicationName failed - error=87 - The parameter is incorrect.

    WTSQuerySessionInformationW - session 0 - WTSWorkingDirectory returned ""
    WTSQuerySessionInformationW - session 0 - WTSOEMId returned ""
    WTSQuerySessionInformationW - session 0 - WTSSessionId returned ""
    WTSQuerySessionInformationW - session 0 - WTSUserName returned ""
    WTSQuerySessionInformationW - session 0 - WTSWinStationName returned "Services"
    WTSQuerySessionInformationW - session 0 - WTSDomainName returned ""
    WTSQuerySessionInformationW - session 0 - WTSConnectState returned "♦"
    WTSQuerySessionInformationW - session 0 - WTSClientBuildNumber returned ""
    WTSQuerySessionInformationW - session 0 - WTSClientName returned ""
    WTSQuerySessionInformationW - session 0 - WTSClientDirectory returned ""
    WTSQuerySessionInformationW - session 0 - WTSClientProductId returned ""
    WTSQuerySessionInformationW - session 0 - WTSClientHardwareId returned ""
    WTSQuerySessionInformationW - session 0 - WTSClientAddress returned ""
    WTSQuerySessionInformationW - session 0 - WTSClientDisplay returned ""
    WTSQuerySessionInformationW - session 0 - WTSClientProtocolType returned ""
    GetShellProcessNameFromUserPolicy - Error: Unable to open policy key - returned [2]
    GetShellProcessName succeseded - explorer.exe

字符串
有什么原因会导致会话0的输出是这样的吗?

koaltpgm

koaltpgm1#

据我所知,你不能确定谁直接通过winapi修改了一个文件。在任何情况下,都需要主机操作系统的帮助。Windows和NTFS允许您审核特定目录并将访问记录在主机的安全事件日志中。
更多详情,建议您参考:https://stackoverflow.com/a/8406836

相关问题