- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2021-10-05T20:42:06+09:00","","")
#navi(../)
* プログラムが「管理者として実行」されているかどうか確認するサンプルコード [#o406f371]
実行しているプログラムが管理者権限「管理者として実行」されているかどうか確認するサンプルコードになります。
#contents
#htmlinsert(windev-top.html)
* 動作確認環境 [#xb0f1962]
- Windows 10 ver.21H1
- .NET Framework 4.7.2
- Visual Studio 2019
- コンソールアプリケーション
* 参考記事 [#te3d2fad]
- Check if the current user is administrator~
https://stackoverflow.com/questions/3600322/check-if-the-current-user-is-administrator
* サンプルコード [#n84333f0]
サンプルコードは上記参考記事リンクのコードそのままです。~
一般ユーザで実行した時と、管理者として実行した時で表示されるメッセージが変わります。
* 本サンプルコードを使用したOSS [#x5c4ba35]
本サンプルコードを使用したOSSを公開しています。~
右クリックメニューに「日付フォルダの作成」が追加され本日日付のフォルダが作成されるフリーソフトとなります。~
初回のみレジストリ登録が必要となるため、本サンプルコードと同様のロジックがあり、管理者として実行を促すメッセージを表示させています。~
-CreateDateFolder &ref(01.png);
https://github.com/oss-sakura/CreateDateFolder
** C# [#l005dcae]
class Program
{
internal static void Main(string[] args)
{
if (IsAdministrator())
{
System.Windows.MessageBox.Show("管理者として実行されています。");
}
else
{
System.Windows.MessageBox.Show("管理者として実行されていません。");
}
}
public static bool IsAdministrator()
{
System.Security.Principal.WindowsIdentity identity
= System.Security.Principal.WindowsIdentity.GetCurrent();
System.Security.Principal.WindowsPrincipal principal
= new System.Security.Principal.WindowsPrincipal(identity);
return principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator);
}
}
** Visual Basic (VB) [#qf5fb22a]
Module IsAdmin
Sub Main()
If IsAdministrator() Then
MsgBox("管理者として実行されています。")
Else
MsgBox("管理者として実行されていません。")
End If
End Sub
Function IsAdministrator() As Boolean
Dim identity As System.Security.Principal.WindowsIdentity = System.Security.Principal.WindowsIdentity.GetCurrent()
Dim principal As New System.Security.Principal.WindowsPrincipal(identity)
Return principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator)
End Function
End Module
以上、C#, Visual Basic によるプログラムが管理者として実行されているかどうか確認するサンプルコードでした。
#htmlinsert(windev-btm.html)