Windows 11 の組み込み sudo の使い方 (ビルド 24H2 以降)
Windows 11 の新しいsudoコマンドに慣れるのは、特にほとんどのユーザーにとって新しいものなので、思ったほど簡単ではありません。私と同じように、通常は管理者権限が必要なコマンドを、管理者権限のない CMD または PowerShell ウィンドウから実行しようとして、「アクセス拒否」エラーに見舞われた経験があるかもしれません。Linux では sudo を使えば簡単に実行できるので、少し面倒です。しかし、ビルド 24H2 以降、Windows 11 には基本的な組み込みsudoコマンドが組み込まれており、これは嬉しい驚きです。これは主に、スクリプトや時折必要となる管理者権限でのタスクを実行する際に、別の管理シェルを開く手間を省くのに役立ちます。ただし、注意点としては、デフォルトでは無効になっているため、設定または regedit を使って手動で有効にする必要があります。また、有効にすると、通常通り UAC プロンプトが表示されますが、実際の使用経験から言うと、時々少し不安定だったり、すぐに機能しなかったりするので、設定を変更したり再起動したりする必要があるかもしれません。一度設定すればsudo、管理シェルですべてを再起動することなく、管理者権限でコマンドを実行できます。これは嬉しいことです。ただし、これは正式な管理者セッションに取って代わるものではなく、スクリプトや単発のコマンドなど、いくつかの作業を効率化するだけであることを覚えておいてください。多少の不具合は覚悟しておく必要がありますが、面倒な手順を踏むのが苦手なパワーユーザーにとっては間違いなく前進です。それでは、実際に有効化して、システムに支障をきたすことなく使用する方法について見ていきましょう。
Windows 11でsudoを有効にして使用する方法
方法1: 設定からsudoをオンにする
これが一番簡単な方法です。 [設定] —> [システム] —> [開発者向け] に進みます。 [sudo を有効にする]というトグルが表示されます。これをオンにすると、コマンドのロックが解除されます。役立つ理由: これは、ほとんどの人にとって sudo を機能させる最も簡単な方法です。有効にすると、sudoコマンドラインで のプレフィックスが付いたコマンドを実行できるようになり、パスワードの代わりに UAC の確認を求められます。いいですね? ただし、セットアップによっては、トグルがすぐには機能しないか、再起動が必要になる場合があります。 sudo コマンドを実行すると、権限を求める UAC プロンプトが表示されます。許可されると、コマンドは管理者権限で実行され、多くの場合新しいターミナル ウィンドウで開きます。ただし、これは Linux の sudo とは異なり、Windows での権限昇格の hammer の代替であることに注意してください。このトグルは、コマンドがsudoアクティブになるかどうかを制御することに注意してください。グレー表示されているかオンにならない場合は、Windows のバージョンを確認するか、レジストリで有効にしてみてください (次の方法)。
方法2: レジストリ経由でsudoを有効にする
手動で制御したい場合、または設定がGUIに表示されない場合は、PowerShellまたはコマンドプロンプトからキーを直接追加できます。管理者としてPowerShellを開き、次のコマンドを実行します。 reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Sudo" /v "Enabled" /t REG_DWORD /d 1 /f なぜこれを行うのでしょうか。 GUIトグルが機能しない場合に、Windowsにsudo機能を認識させるためです。 追加されたら、ログアウトするか、PCを再起動する必要がある場合があります。 これは、それほど手間をかけずに実行されると考えられます。 レジストリキーが設定されたら、新しいコマンドプロンプトまたはPowerShellを通常のユーザーとして開き、次のように入力してみてください。 sudo powershell "Restart-Service iphlpsvc" すべてが有効な場合は、UACプロンプトが表示され、コマンドが管理者として実行されます。 セットアップによっては、レジストリの編集後、再起動するまでsudoコマンドが機能しないことがあります。 注: これが機能するには、適切なsudoパッケージまたはスクリプトがインストールされている必要があります。 そうでない場合、Windowsにはネイティブでsudo機能が含まれていません。 この機能は、LinuxディストリビューションのようにWindowsに完全に組み込まれていないため、カスタマイズやサードパーティツールが必要になる場合があります。
実際にsudoを使ってコマンドを実行する方法
Windows サービスを停止したいが、通常のシェルで「アクセスが拒否されました」というエラーが表示されるとします。
net stop iphlpsvc
結果: システムエラー5が発生しました。アクセスが拒否されました。 シェルが昇格されていないためです。ただし、sudoが有効になっていて動作している場合は、次のコマンドを実行してください。
sudo net stop iphlpsvc
UAC(ユーザーアカウント制御)がポップアップ表示され、確認を求められます。承認されると、問題なく動作します。Windowsでは通常、次のようにするのですが、少し奇妙です。
Start-Process powershell -Verb runAs
シェルを昇格させる代わりに、ここではUACプロンプトが表示されます。これは少しスムーズですが、まだ完璧ではありません。また、次のようにコマンドをインラインで実行することもできます。
sudo --inline net stop iphlpsvc
このコマンドは、新しいウィンドウを生成せずに、現在のウィンドウで昇格された権限で即座にコマンドを実行します。追加のサポートとして、実行するとsudo -hサポートされているすべてのオプションのリストが表示されます。注意:複数のモード(Linuxなど)はWinhanceなどのツールを通じてアクセスできますが、ネイティブWindowsではまだGUIでそれらすべては利用できません。主にデフォルトモードとオプションのインライン使用が利用可能です。
まとめ
Windows 11の導入sudoは一長一短ですが、管理者権限のプロンプトを頻繁に表示するのが面倒な場合は、キー入力の手間を省くことができます。ただし、設定またはレジストリからWindows 11を有効化し、いくつかのコマンドを試してみることを忘れないでください。Linuxほどシームレスではありませんが、Windowsでは権限の昇格が面倒なことを考えると、一度設定しておけば便利な機能です。
- 設定でsudoを有効にするトグルが利用可能かどうかを確認します
- そうでない場合は、PowerShellまたはコマンドプロンプトを使用してレジストリキーを手動で追加します。
sudo動作しているかどうかをテストするには、コマンドを実行します。- パスワードプロンプトではなく、UACプロンプトを期待する
- sudoが完全に設定されていない場合、一部のコマンドでは完全な管理者権限が必要になる場合があることに注意してください。
これで誰かの時間短縮になれば幸いです。ただし、Windows の sudo サポートはまだ完璧ではないので、動作に注意してください。