Tech Tip: Utility Method to Check if Server is Ran as a Service
PRODUCT: 4D Server | VERSION: 15.x | PLATFORM: Mac & Win
Published On: August 1, 2017
Below is a utility method that can check if a 4D Server Database is being ran as a service.
The method is based on the command line service controller "sc" commands.
The method is valid as long as only one instance of the database is being ran. If the database is ran as a service and a second instance is ran as an application, the code will still result in the database being ran as a service as the first instance still appears in the command line's 'sc query' results.
Microsoft Documentation:
More on the Service Controller
The method is based on the command line service controller "sc" commands.
// Method: currentServerServiceStatus // Description // Get the current server service status // // Return // $0 - 1 (Running), 0 (Not running), -1 (Not registered) // ---------------------------------------------------- C_LONGINT($0;$i) C_TEXT($name_t;$cmmd_t;$in_t;$out_t;$err_t) If (Application type=4D Server) & (Folder separator="\\") $name_t:=Structure file $i:=Length($name_t) Repeat Case of : ($name_t[[$i]]=".") $name_t:=Substring($name_t;1;$i-1) : ($name_t[[$i]]=Folder separator) $name_t:=Delete string($name_t;1;$i) $i:=1 End case $i:=$i-1 Until ($i=0) $cmmd_t:="sc query \"4DS "+Lowercase($name_t)+"\"" SET ENVIRONMENT VARIABLE("_4D_OPTION_HIDE_CONSOLE";"true") LAUNCH EXTERNAL PROCESS($cmmd_t;$in_t;$out_t;$err_t) Case of : (Position("RUNNING";$out_t)>0) $0:=1 // current server service is running : (Position("STOPPED";$out_t)>0) $0:=0 // current server service is not running Else $0:=-1 // current server application is not registered as a service End case Else $0:=-2 // This is not 4D Server End if |
The method is valid as long as only one instance of the database is being ran. If the database is ran as a service and a second instance is ran as an application, the code will still result in the database being ran as a service as the first instance still appears in the command line's 'sc query' results.
Microsoft Documentation:
More on the Service Controller