#author("2021-10-05T20:42:06+09:00","","")
#author("2021-10-05T20:42:50+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);
-CreateDateFolder~
https://github.com/oss-sakura/CreateDateFolder
#ref(01.png)



** 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)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS