Advertisement
Firex

AutoIt SvcMan Simple UDF

Dec 30th, 2014
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 4.91 KB | None | 0 0
  1. Global $STANDARD_RIGHTS = 0x000F0000
  2.  
  3. Global $SCMAN_ALL_ACCESS = BitOR( $STANDARD_RIGHTS, 0x0000003F )
  4. Global Const $SCMAN_CONNECT = 0x00000001, _
  5.     $SCMAN_CREATE_SERVICE = 0x00000002, _
  6.     $SCMAN_ENUMERATE_SERVICE = 0x00000004, _
  7.     $SCMAN_LOCK = 0x00000008, _
  8.     $SCMAN_QUERY_LOCK_STATUS = 0x00000010, _
  9.     $SCMAN_MODIFY_BOOT_CONFIG = 0x00000020
  10.  
  11. Global $SVC_ALL_ACCESS = BitOR( $STANDARD_RIGHTS, 0x000001FF )
  12. Global Const $SVC_QUERY_CONFIG = 0x00000001, _
  13.     $SVC_CHANGE_CONFIG = 0x00000002, _
  14.     $SVC_QUERY_STATUS = 0x00000004, _
  15.     $SVC_ENUMERATE_DEPENDENTS = 0x00000008, _
  16.     $SVC_START = 0x00000010, _
  17.     $SVC_STOP = 0x00000020, _
  18.     $SVC_PAUSE_CONTINUE = 0x00000040, _
  19.     $SVC_INTERROGATE = 0x00000080, _
  20.     $SVC_USER_DEFINED_CONTROL = 0x00000100
  21.  
  22. Global Const $SVC_CONTROL_STOP = 0x00000001, _
  23.     $SVC_CONTROL_PAUSE = 0x00000002, _
  24.     $SVC_CONTROL_INTERROGATE = 0x00000004
  25.  
  26. Global Const $SVC_KERNEL_DRIVER = 0x00000001, _
  27.     $SVC_FILE_SYSTEM_DRIVER = 0x00000002, _
  28.     $SVC_ADAPTER = 0x00000004, _
  29.     $SVC_RECOGNIZER_DRIVER = 0x00000008, _
  30.     $SVC_WIN32_OWN_PROCESS = 0x00000010, _
  31.     $SVC_WIN32_SHARE_PROCESS = 0x00000020, _
  32.     $SVC_INTERACTIVE_PROCESS = 0x100
  33.  
  34. Global Enum $SVC_BOOT_START, _
  35.     $SVC_SYSTEM_START, _
  36.     $SVC_AUTO_START, _
  37.     $SVC_DEMAND_START, _
  38.     $SVC_DISABLED
  39.  
  40. Global Enum $SVC_ERROR_IGNORE, _
  41.     $SVC_ERROR_NORMAL, _
  42.     $SVC_ERROR_SEVERE, _
  43.     $SVC_ERROR_CRITICAL
  44.  
  45. ;===============================================================================
  46. ; Description: Starts a service on a computer
  47. ;===============================================================================
  48. Func _StartService($hService)
  49.     Local $vRet = DllCall("advapi32.dll", "int", "StartService", "handle", $hService, "long", 0, "str", "")
  50.     If Not IsArray( $vRet ) Or Not $vRet[0] Then _
  51.         $vRet = _GetServiceError()
  52.  
  53.     Return $vRet[0]
  54. EndFunc
  55.  
  56. ;===============================================================================
  57. ; Description: Stops a service on a computer
  58. ;===============================================================================
  59. Func _StopService($hService)
  60.     Local $vRet = DllCall("advapi32.dll", "int", "ControlService", "handle", $hService, "long", $SVC_CONTROL_STOP, "str", "")
  61.     If Not IsArray( $vRet ) Or Not $vRet[0] Then _
  62.         $vRet = _GetServiceError()
  63.  
  64.     Return $vRet[0]
  65. EndFunc
  66.  
  67. ;===============================================================================
  68. ; Description: Checks if a service is running on a computer
  69. ;===============================================================================
  70. Func _ServiceRunning($hService)
  71.     Local $vRet = DllCall("advapi32.dll", "int", "ControlService", "handle", $hService, "long", $SVC_CONTROL_INTERROGATE, "str", "")
  72.     If Not IsArray( $vRet ) Then _
  73.         $vRet = Null
  74.  
  75.    Return $vRet[0]
  76. EndFunc
  77.  
  78. ;===============================================================================
  79. ; Description: Deletes a service on a computer
  80. ;===============================================================================
  81. Func _DeleteService($hService)
  82.     Local $vRet = DllCall("advapi32.dll", "int", "DeleteService", "handle", $hService)
  83.     If Not IsArray( $vRet ) Or Not $vRet[0] Then _
  84.         $vRet = _GetServiceError()
  85.  
  86.     Return $vRet[0]
  87. EndFunc
  88.  
  89. ;===============================================================================
  90. ; Description: Creates a service on a computer
  91. ;===============================================================================
  92. Func _CreateService($hSCMan, $sServiceName, $sDisplayName, $iDesiredAccess, $iType, $iStartType, $iErrorControl, $sPath)
  93.     Local $vRet = DllCall("advapi32.dll", "handle", "CreateService", "handle", $hSCMan, "str", $sServiceName, "str", $sDisplayName, "dword", $iDesiredAccess, _
  94.         "dword", $iType, "dword", $iStartType, "dword", $iErrorControl, "str", $sPath, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0 )
  95.     If Not IsArray( $vRet ) Or Not $vRet[0] Then _
  96.         $vRet = _GetServiceError()
  97.  
  98.     Return $vRet[0]
  99. EndFunc
  100.  
  101. Func _OpenSCManager($sComputerName, $iDesiredAccess)
  102.     Local $vRet = DllCall( "advapi32.dll", "handle", "OpenSCManager", "str", $sComputerName, "str", "ServicesActive", "dword", $iDesiredAccess )
  103.     If IsArray( $vRet ) Then _
  104.         Return $vRet[0]
  105.  
  106.     Return Null
  107. EndFunc ;==> OpenSCManager
  108.  
  109. Func _OpenService($hSCMan, $sServiceName, $iDesiredAccess)
  110.     Local $vRet = DllCall( "advapi32.dll", "handle", "OpenService", "handle", $hSCMan, "str", $sServiceName, "dword", $iDesiredAccess )
  111.     If IsArray( $vRet ) Then _
  112.         Return $vRet[0]
  113.  
  114.     Return Null
  115. EndFunc ;==> OpenService
  116.  
  117. Func _CloseServiceHandle($hSCObject)
  118.     Local $vRet = DllCall( "advapi32.dll", "int", "CloseServiceHandle", "handle", $hSCObject )
  119.     If IsArray( $vRet ) Then _
  120.         Return $vRet[0]
  121.  
  122.     Return Null
  123. EndFunc ;==> CloseServiceHandle
  124.  
  125. Func _GetServiceError($iType=0)
  126.     Local $aRet = DllCall("kernel32.dll", "long", "GetLastError")
  127.     $aRet[0] *= -1
  128.     If $iType Then $aRet = $aRet[0]
  129.  
  130.     Return $aRet
  131. EndFunc
  132.  
  133. Func _IsServiceFail($vRet)
  134.     Return ( IsInt( $vRet ) And ( $vRet < 0 ) )
  135. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement