- 締切済み
プログラムにWINDOWSから自動で割り当てられたフォルダを割り当て解除する方法
レジストリに、 HKEY_CLASSES_ROOT Folder shell program1で処理 command ・・・ データは、「C:\~\program1.exe "%1"」を指定 と登録する事で、Explorerの右クリック・コンテキストに「program1で処理」を追加し、 例えば、フォルダAAを右クリックし、「program1で処理」を選択すると、 C:\~\program1.exe AA がコマンドとして実行され、 実行されたprogram1.exeでは、フォルダAAを処理したいのですが、 AAが、program1.exeに既に割り当てられており、困っています。 AAを割り当てない、叉はprogram1.exeに割り当てられたAAを割り当てから外す事は出来るでしょうか? program1.exeは、C#.NETで作成しています。 参考)最終的にやりたいことは、AA(フォルダ、またはファイル)の移動(move)ですが、moveによる削除の段階で「他のプロセスに割り当てられている」と怒られてしまいます。この「他のプロセス」と言うのが調べたところ、自分自身なのです。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
回答No.1
タスクマネージャのプロセスタブでそのProgram1.exeは動作しているのではないですか 動いているようならプロセスを選択して『プロセスの終了』ボタンで終了させてから削除や移動をして見ましょう Windowsを再起動した段階でも削除や移動はできないのでしょうか ストリーム系のオブジェクトグローバルで持ったりしてCloseやDisposeをし忘れていませんか
お礼
最終的に採った方法を以下に記します。 AAがカレントフォルダになっていて、カレントフォルダは割り当てから外すことは出来ないので、KEYINシュミレートでBSコードを投げて、エクスプローラ上でカレントフォルダを上位フォルダに移すことで、プログラムからAAのMOVEができる様になりました。
補足
会社でアクセス不可になり補足が遅れましてすみません。 再度説明すると、Programの外で移動するのではなくProgramから移動しているので、Programが稼働中にProgramが割り当てていない状態になっていないと駄目なのですが、割り当てられてしまっているという事なのです。 Explorerのコンテキストメニュー選択で実行させるとそのファイルが割り当てられてしまうという事です。 ちなみにProgram1をSendtoに入れて「送る」をクリックして実行させると問題は発生しません。