Windows 10 でエクスプローラーではなくシェルとしてバッチ スクリプトを起動する

Windows 10 でエクスプローラーではなくシェルとしてバッチ スクリプトを起動する

Windows 10 では、デフォルトのシェルは でexplorer.exe、タスクバー、デスクトップ アイコン、スタート メニューが表示されます。

Windows 10 v1909、おそらく v1903 以降、Microsoft は、ハイパー キー ( CTRL- ALT- SHIFT- WIN) といくつかのキー (Office アプリケーションの既定のキー) を使用することを決定し、Office をインストールしていないユーザーがこれらのキーを自由に使用することを許可していません。

これらのキーをさまざまなプログラムのアクションにバインドしましたが、今ではこれらのキーのそれぞれを押すと、Web ブラウザーで、使用していない Office365 に移動するページが開いたり、OneDrive の O の場合は、OneDrive がインストールされていないためにエラー メッセージが表示されます。

レジストリを微調整することで、ボタンを押したときに何も開かないようにする機能があるはずですが、Windows 10 v1909 ではそれが機能しなくなりました。

この動作をなくす必要があるので、いくつか調査しました。

Microsoft はこのサポートを に直接組み込んだようですexplorer.exe。 を終了するexplorer.exeとホットキーは最終的に消えますが、 を起動するとホットキーexplorer.exeが戻ってきます。

の起動時にexplorer.exeこれらのキーが一度登録され、キーの登録が失敗すると、エクスプローラーは再試行しないようです。つまり、ホットキーを復元するには、エクスプローラーを終了し、これらのホットキーを使用するアプリを再起動してから、エクスプローラーを起動する必要があります。エクスプローラーを終了し、すべての Office ホットキーを登録するアプリを起動し、エクスプローラーを起動してから、Office ホットキーの登録を解除すると、その瞬間から完全にフリーになります。

私の場合、これらすべてのグローバル ホットキーを使用するプログラムは 1 つだけなので、エクスプローラーを起動する前にこのプログラムを起動するだけで問題ありません。

もちろん、エクスプローラーを終了し、自分のプログラムを起動し、その後エクスプローラーを起動するスクリプトを実行することもできますが、これはいずれにせよシステムの起動時に実行されるため、エクスプローラーの代わりに自分の起動スクリプトを起動できれば、結果としてエクスプローラーがフラッシュするのを回避できます。これは、代替シェルを設定することで実現できます。ただし、私の知る限り、.exeシェルとして設定できるのはファイルだけです。

ファイル (または他のスクリプト言語) をシェルとして設定する方法を知っている人はいませんか.cmd? あるいは、グローバル ホットキーの問題を解決する簡単な方法を知っている人はいませんか?

編集: 私は Windows 10 Pro を使用しています。

explorer.exe実際に、ホットキーを登録した後に起動する VB .net プログラムを作成しようとしましたが、確実に動作させることができません。explorer.exeがシェルでない場合、explorer.exe を起動すると、実行されていない間はファイル ブラウザーのみが表示され、タスク バーなどは表示されません。 エクスプローラーがシェルで、それが起動した場合、プログラムによってそれを強制終了すると起動シーケンスが中止されるため、ルーチンを大幅に遅らせる必要があります。つまり、ある時点でエクスプローラーが再起動することが顕著になり、これは理想的とは程遠い状態です。

タスクバーとデスクトップの代わりに独自のシェルを作成するというアイデアを試してみましたが、Actual Tools Window Manager を使用しており、シェルとしてエクスプローラーに依存していることを考えると、これもあまり理想的ではありません。そのため、この質問はまだ未解決ですが、私が尋ねていることは単純に不可能であるのではないかと心配しています。

答え1

キーボード フィルター (WMI プロバイダー リファレンス)

Windows 10 Enterprise および Windows 10 Education でのみサポートされます

WEKF_PredefinedKey
Ctrlこのクラスは、 + Alt+などの定義済みのキーの組み合わせをブロックまたはブロック解除します。Delete

class WEKF_PredefinedKey {
 [Static] uint32 Enable (
   [In] string PredefinedKey<
 );

 [Static] uint32 Disable (
   [In] string PredefinedKey
 );

 [Key] string Id;
 [Read, Write] boolean Enabled;
};

ソース: マイクロソフトドキュメント

答え2

このアイデアはテストしていませんが、妥当で簡単なようです。エクスプローラーを置き換える代わりに、.regレジストリ内でエクスプローラーによって作成された問題のあるエントリを削除または変更するファイルを作成します。次に、Windows のタスク スケジューラでタスクを作成し.reg、Windows にログオンするたびにそのファイルを実行してトリガーします。

詳細については、以下を参照してください。
.reg ファイルを使用してレジストリ サブキーと値を追加、変更、または削除する方法

答え3

ここで解決しました: https://github.com/stringlapse/OfficeKeyFix

C++ の通常のタスク用の拡張機能を備えた Visual Studio をロードする必要があります。空のプロジェクトを作成し、ビルドして、自動実行に移動します。

タスク プランナーで 30 秒または 60 秒の遅延を設定してタスクを作成することをお勧めします。

関連情報