SHFileOperationからIFileOperationへの移行事例

Windows8〔業務アプリ〕開発読本

Windows8〔業務アプリ〕開発読本

やあ子供たち元気にしてるかい。今日はファイルコピーに関するWindowsAPIにおけるWindows7(64bit)罠の物語だよ。
子供たちの中にはSHFileOperationというAPIを知ってる人もいるかと思う。いろいろWindowsデフォルトのコピー動作をそのまま利用したい時は便利だよなこれ。だったよな。XPまではね。Windows7(64bit)ではそうはいかの擦り下ろしポン酢だから気をつけないといけないぞ。
なんとWin7(64bit)ではこのAPIを使って上書きコピーを試みた場合、「ファイルがあります」というにべもないメッセージが出てコピーもせずに、何事もなかったかのように終了するというケースがあるようだ。英語だと "The file exists"となるようだ。困るね。困ったね。さあ困ったよ。
ところがWindowsVista以降ではIFileOperationというCOMインタフェースがこのSHFileOperationの後継機能として利用を推奨されているとのこと。とくに上記の事例があってそれが解消されるとかどこにも書いてないのだが、実際解消されたので今回ここにメモっておくぞ。ちなみにIFileOperationの使い方は、ここに、あとは使うだけ!みたいなコードを載せてくれてるのでこれをそのまま使えばよさそうだよ。
じゃ今回はこの辺で。
インサイドWINDOWS 第6版 上 (Microsoft Press)

インサイドWINDOWS 第6版 上 (Microsoft Press)

Introducing Windows® 7 for Developers

Introducing Windows® 7 for Developers