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

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

2022-01-16 09:30:06

ただし、バッチスクリプトはデフォルトでは管理者として実行されません。通常、私はスクリプトに "XXXXXXX (右クリックして管理者として実行してください!) 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%system32)のような認証が必要なフォルダにアクセスする。

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

拒否された場合は、権限を要求する時です。

でパーミッションを要求する。

(echoのコード参照)

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

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