

CreateFileでファイルをオープンした後、うっかりCloseHandleせずにプログラムを終了してしまったとします。
するとそのファイルは、Windowsを再起動するまで、削除できなくなりますよね。
これを、再起動せずにクローズする方法ってないもんでしょうか?
もう一度プログラムを実行しても、ハンドルオープンしたままですから、当然CreateFileも失敗しますし……。
よくファイル操作するプログラムを作るのですが、しょっちゅうCloseHandleし忘れて再起動するハメになるので、再起動なしでクローズできる方法があれば非常にありがたいのです。
やっぱり、素直に再起動するしかないんでしょうか。
No.3ベストアンサー
- 回答日時:
回答ありがとうございます。
参考URLを見ました。
VBそのものを終了させればよかったんですか!
今までずっとプログラムだけ終了させてデバッグしていたため、再起動しか方法がないと思い込んでいました。
ひとつ利口になりました。ありがとうございますた。
No.2
- 回答日時:
CloseHandle しなくてもそのプログラムが終了したらクローズされるはずですが。
どのバージョンのWindowsでどのようにCreateFileを使用しているのでしょうか?
また何か排他処理をしているのでしょうか?
回答ありがとうございます。
環境はWindows2000でVB6です。
ファイルオープンは普通に、
lHandle = CreateFile(FileName, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
といった感じでオープンしています。特に排他処理はしていません。
No.1
- 回答日時:
ハンドルクローズ処理はメモリリーク問題と並んでリソース管理の基本ですから、それを怠ること自体がプログラムとして大きな問題になります。
ハンドルをクローズしないとファイルディスクリプタが消費され、システムリソースを圧迫しますから、そういうプログラムを組んではいけません。IPAのセキュアプログラミング講座のリンクを挙げておきます。きっと参考になるでしょう。
解決策を簡単に言えば、クラスのデストラクタを利用し、確実にリソースを解放するということです。もちろんそれならば、MFCを初めから使えば自前でそこらへんを考慮する必要もなくなりますが。
参考URL:http://www.ipa.go.jp/security/awareness/vendor/p …
回答ありがとうございます。
もちろん、きちんとクローズ処理をするのが基本だというのはよくわかっているのですが、デバッグ中についつい途中で終了させてしまったりして、しまった……ということがよくあるのです。
もしも再起動しなくてもファイルをクローズできる方法があるなら楽だなぁ、という都合のよい考えでした質問でした。
あ、それと、質問には書き忘れましたが、言語はVBです。C++はたまに使いますが、あまり知識がありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイルの開き方
-
CASLIIのプログラム(並び替え...
-
socketでの複数NICの扱い
-
VBAでユーザーフォームが自動的...
-
Excelで4096点以上のFFTの方法
-
あるプログラムのコマンドライ...
-
未使用の変数を一括検索する方法
-
OS入ってる機器のソフト・アプ...
-
XnViewにwebpを「いつも開く」...
-
セーブの仕方を教えて下さい
-
VB.NETで、プログラム上から新...
-
TMBMSRV.exeによるCPU使用率上昇
-
プログラムから開く・・・DPP
-
べき乗
-
自動クエリとはどういうもので...
-
Google カレンダーの商用利用
-
VB6から他のプログラムを強制終...
-
クリックするとページ内で説明...
-
excelのexe化について
-
正しい五十音順について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイルの開き方
-
あるプログラムのコマンドライ...
-
OS入ってる機器のソフト・アプ...
-
Excelで4096点以上のFFTの方法
-
読み込み中にアクセス違反が発...
-
銃を発砲するならともかく、日...
-
VBAにてメール作成した際、一部...
-
ドロップダウンリストの文字を...
-
PICマイコンのコピー(クローン...
-
UWSCで指定のフォルダを開きたい。
-
XnViewにwebpを「いつも開く」...
-
Excelに埋め込んだVBAのプログ...
-
「Outlookが他のプログラムによ...
-
visual studio 2019を使ってい...
-
未使用の変数を一括検索する方法
-
powered byの表記について
-
VBAでユーザーフォームが自動的...
-
画像を読み込むのと取り込むの...
-
VC++コンソールアプリでウイン...
-
Google カレンダーの商用利用
おすすめ情報