この質問のバリエーションがあちこちで聞かれているのを見つけ、そこで見つけた実際の答えをすべて試してみました (関連付けのレジストリを変更することを含む)。基本的な問題は次のとおりです。
- デスクトップまたはコンピューターの任意のフォルダーにバッチ ファイル (エコーと一時停止を含む単純なバッチ) を作成します。
- バッチ ファイルをダブルクリックして実行すると、次の結果が得られます。
回避策は次のとおりです。
- 右クリックして管理者として実行
- コマンドプロンプトを開き、バッチファイルを名前で呼び出します。
しばらくの間、これらの回避策を使用して問題に対処していましたが、特定のプログラムが正しく動作しない (たとえば、Android Studio の android.bat は、ファイルが存在しているにもかかわらず見つからないため実行されません) のは、この問題に関連しているのではないかと考え始めています。今後 1 週間で修正できない場合は、再フォーマットする予定です。
追加情報:
- これはWindows 8.1 Pro 64ビットです
- ダブルクリック実行の問題が発生するファイルタイプは他にはありません。
- 回避策を使用して別のバッチファイルからバッチファイルを呼び出すと、動作します
- これは、私がいるフォルダに関係なく発生し、同じWindowsのコピーを使用しているHyper-V仮想マシンでは発生しません。
- すべての Windows アップデートが実行され、ウイルス スキャンなども実行されました。同時に問題が発生している唯一の他の点は、マシンが少し遅くなっているように見えることです (特に、任意のプログラムでファイル ダイアログを開こうとすると、瞬時に開くのではなく、開くのに約 5 秒かかります)。
何かアイデアがあれば、ぜひ教えてください。ちょうど再フォーマットする時期かもしれません (1 年ほど経ちました)。
編集: SuperUser については知りませんでした。この質問はそちらの方が適切かもしれません。
編集2: 誰かアイデアを持っていますか?
答え1
システム環境の COMSPEC を確認してください。%SystemRoot%\system32\cmd.exe のような形式になっているはずです。何らかの理由で変更された場合、bat ファイルはダブルクリックで実行できなくなります。
答え2
バッチ ファイルを「特権領域」で実行しています。Microsoft はこの事実を認識しており、これに応じて対処する必要があります。
ほとんどのウイルスやマルウェアは、OS ドライブのルートを悪用します。
必要なのは、フォルダーを作成し、そこにバッチ ファイルを移動することです。
C:\test\test.bat
余談ですが、「サーバーの世界」では、OS と同じドライブにアプリケーションをインストール/実行することは実際には好ましくない習慣と考えられています。消費者向けのラップトップ/デスクトップでは問題ありませんが、サーバー空間ではこれは悪い習慣です。たとえば、Web サーバーまたはデータベースが誤ったプロセスを実行し、ログ領域がドライブをいっぱいにした場合、文字通り OS が停止する可能性があります。
私の考えを少し述べます。
ありがとう。
答え3
「cmd.exe」ファイルを別の PC からコピーし、windows/system32/ フォルダに貼り付けました。これで問題は解決しました。