2017-01-26 26 views
-2

如何檢查用戶(Windows)在C++(WinAPI)中打開的特定目錄? 例如,我有程序\user\My Documents\checker.exechecker.exe正在後臺運行並檢查用戶是否打開My Documents目錄。如果這是真的,程序將系統時間保存到file.txt。 謝謝你的幫助!我可以檢查的特定目錄是由c + +中的用戶(Windows資源管理器)打開的

+0

快速搜索句柄命令看起來像它可以檢索您需要的數據。 [https://technet.microsoft.com/en-us/sysinternals/bb896655.aspx]這是一個cmd命令。你可以用'system()'函數調用cmd命令。 –

+0

只有一種方法正好做到這一點 - 爲文件系統寫入微過濾器(或舊式過濾器) – RbMm

+0

您可以[檢查打開文件的進程(PID)](http://stackoverflow.com/questions/6931972/how-找到哪個進程具有一個文件的文件名),然後[嘗試找到使用該PID的用戶](http://stackoverflow.com/questions/3172392 /檢出用戶名 - 從處理-ID)。我不確定這是否適用於文件夾。 –

回答

2

您必須首先獲得使用該用戶的 「我的文檔」 文件夾中任何的PIDL:

然後,您可以enumerate all Explorer windows,比較從每個窗口的PIDL或者。如果任何窗口的PIDL與檢索到的PIDL匹配/開始,該窗口將打開「我的文檔」文件夾或(大)子文件夾。

+0

Upvote,但這僅適用於「我的文檔」,這只是目錄的OP示例。 – user2120666

+0

@ user2120666:那是因爲我放入了我的文檔的GUID!如果你有一個常規路徑,你可以調用'ILCreateFromPath'來代替。 – MSalters

+0

如果shell命名空間擴展名在目錄所在的位置,請不要正確處理ParseDisplayName? – user2120666

相關問題