VB C# .NET Freamworkの備忘録

C#, VB.NET Freamworkの備忘録を掲載しています。 コントロール、WPF、スレッド、共通関数と実用的なコードを掲載してきます。

ログインユーザが管理者権限か確認 WindowsPrincipal



''' <summary> ''' ログインユーザが管理者権限か否かを判断し、返します。 ''' </summary> ''' <returns></returns> ''' <remarks></remarks> Public Shared Function IsAdministrator() As Boolean ' 現在のWindowsユーザのロール取得 Dim myPrincipal As New WindowsPrincipal(WindowsIdentity.GetCurrent()) Return myPrincipal.IsInRole(WindowsBuiltInRole.Administrator) End Function

----------------------------------------------------------
VB C# .NET Freamworkの備忘録
http://ari-it.doorblog.jp/
javascriptの備忘録
http://ari-java.doorblog.jp/
--------------------------------------------------------- 

API サービス 起動と停止



APIを利用して、
サービスのインストール、起動から停止、削除を行います。
#Region "CreateService"
‌ 
    <DllImport("advapi32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
    Public Shared Function CreateService(ByVal hSCM As IntPtr, ByVal sName As StringByVal sDisplay As StringByVal iAccess As IntegerByVal iServiceType As IntegerByVal iStartType As IntegerByVal iError As IntegerByVal sPath As StringByVal sGroup As StringByVal iTag As IntegerByVal sDepends As StringByVal sUser As StringByVal sPass As StringAs IntPtr
    End Function
‌ 
    Private Enum ServiceTypeEnum
        Win32OwnProcess = System.ServiceProcess.ServiceType.Win32OwnProcess
        AutoStart = &H2
        ErrorNormal = &H1
    End Enum
‌ 
    ''' <summary>
    ''' サービスの作成を行う。
    ''' </summary>
    ''' <param name="hSCM">SCマネージャのハンドル</param>
    ''' <param name="serviceName">サービス名</param>
    ''' <param name="path">ファイルパス</param>
    ''' <returns>結果</returns>
    ''' <remarks></remarks>
    Public Shared Function CreateService(ByVal hSCM As IntPtr, ByVal serviceName As StringByVal path As StringAs IntPtr
‌ 
        Dim result As IntPtr = CreateService(hSCM, _
                                                                serviceName, _
                                                                serviceName, _
                                                               ApiCommon.SCM_ACCESS.SC_MANAGER_ALL_ACCESS, _
                                                                ServiceTypeEnum.Win32OwnProcess, _
                                                                ServiceTypeEnum.AutoStart, _
                                                                ServiceTypeEnum.ErrorNormal, _
                                                                path, _
                                                                Nothing, _
                                                                Nothing, _
                                                                Nothing, _
                                                                Nothing, _
                                                                Nothing)
‌ 
        Return result
    End Function
‌ 
#End Region
‌ 
#Region "CloseServiceHandle"
    <DllImport("advapi32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
    Public Shared Function OpenService(ByVal handle As IntPtr, ByVal serviceName As StringByVal access As IntegerAs IntPtr
    End Function
‌ 
    ''' <summary>
    ''' サービスのオープンを行う
    ''' </summary>
    ''' <param name="handle">SCManagerのハンドル</param>
    ''' <param name="serviceName">サービス名</param>
    ''' <param name="access">アクセス権</param>
    ''' <returns>サービスのハンドル</returns>
    ''' <remarks></remarks>
    Public Shared Function OpenService(ByVal handle As IntPtr, ByVal serviceName As StringByVal access As IntPtr) As IntPtr
        Return OpenService(handle, serviceName, access)
    End Function
#End Region
‌ 
#Region "DeleteService"
‌ 
    <DllImport("advapi32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
    Private Shared Function DeleteService(ByVal hService As IntPtr) As Boolean
    End Function
‌ 
‌ 
    ''' <summary>
    ''' サービスのアインストールを行います。
    ''' </summary>
    ''' <param name="hService">サービスのハンドル</param>
    ''' <returns>結果</returns>
    ''' <remarks></remarks>
    Public Shared Function UninstallService(ByVal hService As IntPtr) As Boolean
‌ 
        Return DeleteService(hService)
‌ 
    End Function
‌ 
#End Region
‌ 
#Region "CloseServiceHandle"
    <DllImport("advapi32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
    Private Shared Function CloseServiceHandle(ByVal iHandle As IntPtr) As Integer
    End Function
‌ 
    ''' <summary>
    ''' サービスのアインストールを行います。
    ''' </summary>
    ''' <param name="hService">サービスのハンドル</param>
    ''' <returns>結果</returns>
    ''' <remarks></remarks>
    Public Shared Function CloseService(ByVal hService As IntPtr) As Integer
‌ 
        Return CloseServiceHandle(hService)
‌ 
    End Function
#End Region

APIを利用して、特殊ディレクトのパスを取得します。


#Region "SHGetSpecialFolderPath"

    ''' <summary>
    ''' 特別ディレクトリの取得を行います
    ''' </summary>
    ''' <param name="hwndOwner">オーナーのハンドル</param>
    ''' <param name="lpszPath">取得したパスを格納する変数</param>
    ''' <param name="nFolder">指定フォルダのCSIDL</param>
    ''' <param name="fCreate">フォルダを作成するか</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Declare Function SHGetSpecialFolderPath Lib "shell32" Alias "SHGetSpecialFolderPathA" (ByVal hwndOwner As IntPtr, <OutAttribute()> ByVal lpszPath As Text.StringBuilder, ByVal nFolder As Long, ByVal fCreate As Boolean) As Boolean

    ''' <summary>
    ''' 特別ディレクトリの取得を行います。
    ''' </summary>
    ''' <param name="folder"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetSpecialFolderPath(ByVal folder As Long) As String
        Dim path As New Text.StringBuilder(255)

        SHGetSpecialFolderPath(IntPtr.Zero, path, folder, False)

        Return path.ToString()

    End Function

#End Region
----------------------------------------------------------
VB C# .NET Freamworkの備忘録
http://ari-it.doorblog.jp/
javascriptの備忘録
http://ari-java.doorblog.jp/
--------------------------------------------------------- 

↑このページのトップヘ