C++ で Win32 ハンドルを使用してファイルの名前を取得しようとしています。
さらに 2 つの懸念事項があります。ファイルが空である可能性があり (ファイルを開くことができない可能性があります)、Windows Vista 以降でサポートされている高度な関数 (GetFinalPathNameByHandle など) をすべて使用できません。
助けてくれてありがとう!
win32 についてはわかりませんが、sysinternals プロセス エクスプローラーについては知っています。Google はオープン ソースの代替案を思いつきました: http://processhacker.sourceforge.net/
そのコードを勉強することで、これが可能になるかもしれません。
GetMappedFilename()
MSDN で推奨されていますが、最適なソリューションではありません。
ここにコピーして貼り付ける準備ができていることを正確に実行するコードを投稿しました: オープンハンドルに関連付けられた名前を取得する方法
XP+ の場合、ファイルをマップしてから呼び出すGetMappedFileName
と、名前が返されます (ただし、ディレクトリの場合は除きます)。ファイル ハンドルからファイル名を取得するを参照してください。