Lorsque vous double-cliquez sur un fichier, vous demandez à l'Explorateur d'effectuer une action en votre nom. Explorer le fait en examinant l'extension du fichier, en recherchant l'application associée à cette extension et en la lançant avec des instructions pour ouvrir le fichier.
Le chargeur Windows est responsable du chargement de l'application en mémoire et de son fonctionnement. Pour ce faire, il doit ouvrir au moins l'exécutable et généralement une ou plusieurs DLL. Une fois l'application démarrée, elle peut également ouvrir certains fichiers de configuration avant d'ouvrir le fichier demandé par l'utilisateur.
Toutes ces opérations ouvertes sont effectuées dans le même contexte. Le noyau sait quel processus a ouvert le fichier, mais il n'a aucun moyen de savoir s'il a été ouvert par le chargeur Windows ou par l'application elle-même, ou de faire la distinction entre un fichier de configuration et le fichier sur lequel l'utilisateur double-clique. Vous ne pourrez donc pas détecter les opérations d'ouverture de fichier initiées par l'utilisateur à partir d'un pilote de filtre de système de fichiers.
Il peut être possible d'utiliser une extension Windows Explorer, bien que cela ne fonctionne que pour les fichiers ouverts à l'aide de l'explorateur ou de l'une des boîtes de dialogue standard, c'est-à-dire pour la plupart des applications.
Je vais donner un exemple pour mieux m'expliquer moi-même: Disons que j'ouvre un fichier abc.txt. Les appels en mode utilisateur seront: Ouvrez un tas de dll, ouvrez le bloc-notes, ouvrez abc.txt. Je veux filtrer ceci et attraper seulement le abc.txt (ou toute autre chose que l'utilisateur a ouvert). Comment attraper seulement ce que l'utilisateur (l'humain) ouvre? Comme double-cliquez et entrez) – user3449011
@ user3449011: vous ne pouvez pas. Windows sait seulement qu'un programme ouvre un fichier, il n'a aucun moyen de savoir s'il ouvre un fichier parce que l'utilisateur l'a explicitement demandé ou pour une autre raison. –
@HarryJohnston - vraiment essayer OP trouvé de l'utilisateur ou le mode noyau était demande. et il ne peut pas comprendre ce qui est - 'FLT_CALLBACK_DATA.RequestorMode' - commencer à http://stackoverflow.com/questions/41292697/minispy-driver-user-mode-call – RbMm