タスクスケジューラーで起動するバッチファイルの処理の中で別の実行ファイルを起動する。このとき、実行権限は継承されるのか念のため確認してみました。
![](https://work-note32.com/wp-content/uploads/2021/12/eb22bf7a906b7f73af3d68cd620dade7.jpg)
結論としては同じだったのですが、確認内容をメモしておきます。
実行ファイルを作る
C#のコンソールアプリで下のような感じで管理者として実行されたかどうかをテキストファイルに出力する処理を作りました。
![](https://work-note32.com/wp-content/uploads/2021/12/44d29d2792be3bad9a9ed98c7bbb20d6.jpg)
static void Main(string[] args)
{
System.IO.StreamWriter sw = new System.IO.StreamWriter(@".txt", false, Encoding.UTF8);
if (IsAdministrator())
{
sw.Write("管理者権限で実行された");
}
else
{
sw.Write("管理者権限で実行されなかった");
}
sw.Close();
}
static private bool IsAdministrator()
{
var identity = System.Security.Principal.WindowsIdentity.GetCurrent();
var principal = new System.Security.Principal.WindowsPrincipal(identity);
return principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator);
}
C#で管理者権限で実行しているか否か判断する方法は下記ページを参照させていただきました。
![](https://work-note32.com/wp-content/uploads/cocoon-resources/blog-card-cache/4598045961faebb6139ddf9bf9f5fc62.png)
C#で自分が管理者で実行されているか調べる
Windowsではユーザー毎に権限が設定されていて、それによってアプリケーションの行動が制限されます。 例えば管理者権限を持っていないと特定のフォルダにアクセスできなかったり、レジストリの登録ができなかったり。 またWindows Vista以降では、UAC(ユーザーアカウント制御)という仕組みが導入されていて、これが...
実行ファイルを起動するバッチファイルを作る
上記のC#で作ったコンソールアプリを起動するバッチファイルを作りました。
今回はcallで実行ファイルを起動することにしました。
![](https://work-note32.com/wp-content/uploads/2021/12/0e4aae38a1f5494592124a884058f7cb.jpg)
タスクスケジューラでバッチファイルを起動する
そして上記のバッチファイルをタスクスケジューラから起動するよう設定し、C#のコンソールアプリから吐き出したテキストファイルの内容を確認しました。
![](https://work-note32.com/wp-content/uploads/2021/12/dda9bb331e5adc2b5a3ca1088fa71280-1024x396.jpg)
![](https://work-note32.com/wp-content/uploads/2021/12/080047c41d77c58d97cf85ec35d0e15b.jpg)
以上です。