1. ホーム
  2. スクリプト・コラム
  3. 腹筋

管理者権限でバッチファイルを自動実行(vbsとbatの2つの方法)

2022-01-07 19:15:08

ただし、バッチスクリプトはデフォルトでは管理者として実行されません。通常は「XXXXXX(右クリックして管理者として実行してください!)bat」という名前をつけますが、このプロンプトを無視して直接実行するユーザーが必ずいて、権限不足で失敗することがあるのです。

回避策として、まずvbsスクリプトを呼び出し、そのvbsスクリプトを通してbatのrunas部分を管理者として呼び出すことでbatを起動させることができます

私たちのスクリプトはrunasの下に書くことができるので、batスクリプトをクリックすると、管理者として実行することができます

サンプルコードは以下の通りです。

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Includes support for Razor Pages and controllers.
        services.AddMvc();
    services.AddMvc(); }

    public void Configure(IApplicationBuilder app)
    services.
        app.UseMvc();
    }
}

VBSがBAT2を管理者権限で起動する

services.AddDbContextPool < BloggingContext > (
  options => options.UseSqlServer(connectionString)
);

注意:runaは引数を渡すことができません

batスクリプトで管理者権限でコマンドを実行する

書き込んだbatを起動するように設定した後、デフォルトでは管理者としてではなく、起動時にいくつかのコマンドが実行されるようになる

はじめに:管理者権限を取得するたびにウィンドウズがポップアップする場合は、まず、ポップアップウィンドウを閉じてください

閉じる方法は、ポップアップが促されるたびにアラートボックスに暗いフォントが表示され、クリックしてポップアップの設定を変更し、ポップアップを表示しないまたは表示するように設定することができます

次に、.batスクリプトに以下のコードを追加して、管理者として実行するだけです。

batスクリプトファイルの1行目に、以下のコマンドを追加します。

::強制的に管理者権限を付与する

<LangVersion>latest</LangVersion>

cmd/batを右クリックで実行せずに、自動的に管理者権限を要求する方法

まず、コード全文です。

public class Program
{
    public static void Main(string[] args)
    {
           BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
           WebHost.CreateDefaultBuilder(args)
           .UseStartup<Startup>()
           .Build();
}

原理は以下の通りです。

(%SYSTEMROOT%system32configsystem) のような認証が必要なフォルダにアクセスする。

許可された場合、明らかに管理者権限を持っていることを意味する

拒否された場合は、パーミッションを要求する時です。

でパーミッションを申請します。

(エコー用のコードを参照)

相対ディレクトリ(相対ディレクトリとは、バッチ処理を実行するディレクトリ)内のプログラムを実行するランナーを管理者権限で作成します。

そうすれば当然、管理者ワオを申請することができます。vbsが自動的にバッチファイルを管理者として実行するという記事はこれに尽きます。