すでに管理者である場合はrunasを実行します

すでに管理者である場合はrunasを実行します

runas を使用して権限を昇格しようとすると、何かがわかりません。管理者権限をすでに持っている単一のユーザーがいるシンプルな Win10 マシンです。スクリプトを使用して特定のレジストリ キーに書き込む必要がありますが、reg コマンドを直接使用しようとすると「アクセスが拒否されました」というメッセージが表示されます。

> reg ...
ERROR: Access is denied.

試してみると:

> runas /user:Administrator Command
Enter the password for Administrator:
1326: The user name or password is incorrect.

ユーザー パスワードが拒否されます。ローカル マシンに特定の管理者パスワードがあるわけではないと思います。他のアカウントはありません。試す:

> runas /user:MyUser Command
Enter the password for MyUser:
740: The requested operation requires elevation

では、コマンド ラインから権限を昇格するにはどうすればいいのでしょうか?!? ここで管理者権限があることが表示されないのはなぜですか:

>runas /showtrustlevels
The following trust levels are available on your system:
0x20000 (Basic User)

編集: 何をしたいのか、もっと明確にした方がいいかもしれません。C プログラムから、WT_KEY_HKLM の "Software\Microsoft\Windows\CurrentVersion\Run" を変更したいのです。XP ではこれを直接実行できますが、最近のバージョンの Windows では効果がありません。実際、コマンド ラインからこのキーに対して "reg" を実行すると、アクセスが拒否されます。昇格した権限でプログラムを実行したくないので、system("runas reg ...") のようにパスワードを要求してレジストリを変更するというアイデアです。しかし、コマンド ラインからコマンドを実行することすらできません。適切な方法を誰か教えてくれませんか?

答え1

[user] と [command] を使用しようとしているものに置き換えて、これを試してください。

powershell.exe -ExecutionPolicy Bypass -command "& {Start-Process powershell.exe -Credential '[user]' -ArgumentList 'Start-Process ""[command]"" -Verb runAs'}"

長所:

  • 管理者権限のないコマンドプロンプト、実行ウィンドウ、Windowsのショートカットで使用できます。
  • コマンドのみが昇格されます。昇格は、PowerShell ウィンドウの実行ではなく、コマンドの実行の一環として行われます。

短所:

  • 常にログインを求められます (runas のように資格情報を保存する方法はありません)。 - これは Pro かもしれません。
  • UAC が有効になっている場合は UAC プロンプトが表示されます。これは、UAC を使用して昇格する場合は避けられません。
  • 資格情報と昇格を処理中に2つのPowerShellウィンドウを開き(閉じ)、
  • コマンド内の引用符は問題があります (または少なくともすぐに複雑になります)。引用符が必要なコマンドはバッチ ファイルに配置し、バッチ ファイルをコマンドとして実行する必要があります。

このコマンドを PowerShell プロンプトから実行する場合は、次のように短縮できます。

Start-Process powershell.exe -Credential '[user]' -ArgumentList 'Start-Process ""[command]"" -Verb runAs`'

S.

答え2

デフォルトでは、管理者アカウントはロックダウンされているため、他のユーザーが悪用することはできません。「runas /user:Administrator」コマンドに空のパスワードを使用しようとすると、アカウントがロックされていることがわかります。

ユーザーがすでに管理者権限を持っている場合は、「reg」コマンドにアクセスできるはずです。私のマシンでは、それは可能です。

残念ながら、「runas」を使用して管理者特権のコマンドにアクセスすることはできません。管理者特権のコマンド プロンプトからこれを行う必要があります。これは、「ru​​nas」コマンド (この場合は機能しません) を使用するか、「cmd.exe」を右クリックして「管理者として実行」を選択することで作成できます。

答え3

コマンド ライン アイコンまたは cmd.exe を右クリックして管理者として実行を選択すると、コマンド ラインを管理者として実行できます。この方法では、管理者特権のコマンド プロンプトが実行され、説明した問題は発生しません。また、コマンドを入力するときに runas を使用する必要もありません。

関連情報