Ich vermute mal, dass Unlocker dem anderen Programm das
Handle unter den Füßen wegzieht. Es gibt keine gute Möglichkeit, dein Problem zu lösen, jedoch eine Reihe von schlechten (folgende Liste ist ohne Anspruch auf Vollständigkeit):
1. CreateFile hooken und FILE_SHARE_READ zum dritten Parameter hinzu-or-en. Du solltest jedoch bedenken, dass sich der Programmierer des "Feind"-Programms etwas dabei gedacht haben könnte, als er dieses Flag nicht gesetzt hat.
2. Einen Thread in das andere Programm injizieren, und von dort aus mit dem entsprechenden
Handle lesen. Das funktioniert jedoch nur, wenn im anderen Programm bei CreateFile auch Lesezugriff und nicht nur Schreibzugriff beantragt wurde. Richtig hässlich wird es, wenn die Datei nicht overlapped geöffnet wurde. Dann musst du nämlich manuell den Dateizeiger versetzen. Dabei gibt es dann eine Race Condition.