→ 🚀What's New? Join Us for the Fall Product Launch! Register Now !

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Anonymous
Not applicable
Hello, this is how I've implemented a remote VNC solution integrated in Lansweeper on the custom actions. My requirements were:
- no service running on the client except when I enter the users computers (install on demand, remove after closing client))
- ask the user for authorization to log in
- if no user is logged in, no need to ask for authorization

What you need to make it work:
- Autoit and the UDF "ServiceControl"
- RealVNC, just the following files: vncviewer.exe, winvnc4.exe and wm_hooks.dll
(note: I use UPX to compress the files to it's maximum before compiling the main EXE, this saves some kb and speeds up when you use this on a slow connection)

Now put those files on the same directory as the following script (suggested name: remotevnclansweeper.au3):
#include "ServiceControl.au3"
Opt("TrayIconHide", 1)
Opt("RunErrorsFatal", 0)
$winvncdir = "TEMP"
$servicename = "VNC"
;here I pass some definitions to the service startup command, the screen asking for user authorization will appear for 30s as defined in -QueryConnectTimeout=30, if no user is logged on, I can enter the pc directly (QueryOnlyIfLoggedOn)
$servicecmd = "c:\" & $winvncdir & "\winvnc4.exe -service -QueryConnect=1 -QueryConnectTimeout=30 -SecurityTypes=none -QueryOnlyIfLoggedOn -DisableClose"
$HostName = $cmdline[1]
Ping($HostName)
If @error Then
MsgBox(0, "Error", "Hostname " & $HostName & " is unreachable")
Exit
EndIf
If Not FileExists("\\" & $HostName & "\c$\" & $winvncdir) Then DirCreate("\\" & $HostName & "\c$\" & $winvncdir)
FileInstall("wm_hooks.dll", "\\" & $HostName & "\c$\" & $winvncdir & "\wm_hooks.dll")
FileInstall("winvnc4.exe", "\\" & $HostName & "\c$\" & $winvncdir & "\winvnc4.exe")
FileInstall("vncviewer.exe", @ScriptDir & "\vncviewer.exe")

If Not _ServiceExists ($HostName, $servicename) Then
_CreateService ($HostName, $servicename, "VNC", $servicecmd, "LocalSystem", "", 0x110)
EndIf

If Not _ServiceRunning ($HostName, $servicename) Then
_StartService ($HostName, $servicename)
EndIf

; wait for the vnc client to close, then remove the service
RunWait(@ScriptDir & "\vncviewer.exe " & $HostName)

; remove the service, delete the temporary files (wm_hooks.dll sometimes fails to remove, but it's not important I guess)
_StopService ($HostName, $servicename)
_DeleteService ($HostName, $servicename)
FileDelete("\\" & $HostName & "\c$\" & $winvncdir & "\winvnc4.exe")
FileDelete("\\" & $HostName & "\c$\" & $winvncdir & "\wm_hooks.dll")


The entry on the custom actions:
\\server\share$\Lansweeper\remotevnclansweeper.exe {computer}


This is quite simple but effective, and a good example on how to program in a simple way new functionalities for Lansweeper. Using SQL UDF you can even interact with the database.
9 REPLIES 9
Anonymous
Not applicable
Try to run it manually with:
remotevnclansweeper.exe hostname

chada
Engaged Sweeper III
BullGates,

I still get the same error as Daniel above when following these instructions. Maybe we are missing a step. I installed
Autoit. I copied the service control ad3 file to a directory as well as your script above. I installed RealVNC and copied those files mentioned from my program files folder to the same directory as the scripts. I copiled the .exe using Autoit script to .exe. When executing this file directly or out of lansweeper I get the error daniel is getting below.

AutoIt Error

Line -1:

Error: Unknown option or bad parameter specified


EDIT: I saw the post where you said to comment out the Opt ("runerrorsfatal", 0) I did that and now I am getting this error.

AutoIt Error
Line -1
Error: Array variable has incorrect number of subscripts or subscript dimension range exceeded.

aquateen
Engaged Sweeper
This is really cool. The only question I have is, what about Windows firewall exceptions for VNC? Does it add and remove those on the fly as well, or is not needed if you already opened the ports required for Lansweeper; file & printer sharing etc?

I will try to test myself.

Thanks
DanielH
Engaged Sweeper
Yup. Just to make sure I uninstalled RealVNC, reinstalled it, used the 3 files needed, then recompiled. I still received the same error. When you ask, "Are you using RealVNC," you do mean the 3 files right? As well as on my machine. Thanks again.
Anonymous
Not applicable
DanielH wrote:
Yup. Just to make sure I uninstalled RealVNC, reinstalled it, used the 3 files needed, then recompiled. I still received the same error. When you ask, "Are you using RealVNC," you do mean the 3 files right? As well as on my machine. Thanks again.


This is quite old but maybe you still have the problem, why did you changed the line?
$HostName = $cmdline[0]

it should be as in my first post:
$HostName = $cmdline[1]
Anonymous
Not applicable
Here works fine. I only had to comment the Opt("RunErrorsFatal", 0) since it's not supported in the latest autoit version and it works fine. Are you using RealVNC?
DanielH
Engaged Sweeper
I didn't' have the {computer} variable there, thanks. But that didn't solve the problem. I'm still receiving the same error msg as before. Here is the code from my remotevnclansweeper.au3 file, followed by the code from the servicecontrol.au3 file. Thank you for your help.

Remotevnclansweeper.au3 Code:

#include "ServiceControl.au3"
Opt("TrayIconHide", 1)
Opt("RunErrorsFatal", 2)
$winvncdir = "TEMP"
$servicename = "VNC"
;here I pass some definitions to the service startup command, the screen asking for user authorization will appear for 30s as defined in -QueryConnectTimeout=30, if no user is logged on, I can enter the pc directly (QueryOnlyIfLoggedOn)
$servicecmd = "c:\" & $winvncdir & "\winvnc4.exe -service -QueryConnect=1 -QueryConnectTimeout=30 -SecurityTypes=none -QueryOnlyIfLoggedOn -DisableClose"
$HostName = $cmdline[0]
Ping($HostName)
If @error Then
MsgBox(0, "Error", "Hostname " & $HostName & " is unreachable")
Exit
EndIf
If Not FileExists("\\" & $HostName & "\c$\" & $winvncdir) Then DirCreate("\\" & $HostName & "\c$\" & $winvncdir)
FileInstall("wm_hooks.dll", "\\" & $HostName & "\c$\" & $winvncdir & "\wm_hooks.dll")
FileInstall("winvnc4.exe", "\\" & $HostName & "\c$\" & $winvncdir & "\winvnc4.exe")
FileInstall("vncviewer.exe", @ScriptDir & "\vncviewer.exe")

If Not _ServiceExists ($HostName, $servicename) Then
_CreateService ($HostName, $servicename, "VNC", $servicecmd, "LocalSystem", "", 0x110)
EndIf

If Not _ServiceRunning ($HostName, $servicename) Then
_StartService ($HostName, $servicename)
EndIf

; wait for the vnc client to close, then remove the service
RunWait(@ScriptDir & "\vncviewer.exe " & $HostName)

; remove the service, delete the temporary files (wm_hooks.dll sometimes fails to remove, but it's not important I guess)
_StopService ($HostName, $servicename)
_DeleteService ($HostName, $servicename)
FileDelete("\\" & $HostName & "\c$\" & $winvncdir & "\winvnc4.exe")
FileDelete("\\" & $HostName & "\c$\" & $winvncdir & "\wm_hooks.dll")



Servicecontrol.au3 Code:

Global $STANDARD_RIGHTS_REQUIRED = 0x000F0000

; Service Control Manager access types
Global $SC_MANAGER_CONNECT = 0x0001
Global $SC_MANAGER_CREATE_SERVICE = 0x0002
Global $SC_MANAGER_ENUMERATE_SERVICE = 0x0004
Global $SC_MANAGER_LOCK = 0x0008
Global $SC_MANAGER_QUERY_LOCK_STATUS = 0x0010
Global $SC_MANAGER_MODIFY_BOOT_CONFIG = 0x0020

Global $SC_MANAGER_ALL_ACCESS = BitOR($STANDARD_RIGHTS_REQUIRED, _
$SC_MANAGER_CONNECT, _
$SC_MANAGER_CREATE_SERVICE, _
$SC_MANAGER_ENUMERATE_SERVICE, _
$SC_MANAGER_LOCK, _
$SC_MANAGER_QUERY_LOCK_STATUS, _
$SC_MANAGER_MODIFY_BOOT_CONFIG)

; Service access types
Global $SERVICE_QUERY_CONFIG = 0x0001
Global $SERVICE_CHANGE_CONFIG = 0x0002
Global $SERVICE_QUERY_STATUS = 0x0004
Global $SERVICE_ENUMERATE_DEPENDENTS = 0x0008
Global $SERVICE_START = 0x0010
Global $SERVICE_STOP = 0x0020
Global $SERVICE_PAUSE_CONTINUE = 0x0040
Global $SERVICE_INTERROGATE = 0x0080
Global $SERVICE_USER_DEFINED_CONTROL = 0x0100

Global $SERVICE_ALL_ACCESS = BitOR($STANDARD_RIGHTS_REQUIRED, _
$SERVICE_QUERY_CONFIG, _
$SERVICE_CHANGE_CONFIG, _
$SERVICE_QUERY_STATUS, _
$SERVICE_ENUMERATE_DEPENDENTS, _
$SERVICE_START, _
$SERVICE_STOP, _
$SERVICE_PAUSE_CONTINUE, _
$SERVICE_INTERROGATE, _
$SERVICE_USER_DEFINED_CONTROL)

; Service controls
Global $SERVICE_CONTROL_STOP = 0x00000001
Global $SERVICE_CONTROL_PAUSE = 0x00000002
Global $SERVICE_CONTROL_CONTINUE = 0x00000003
Global $SERVICE_CONTROL_INTERROGATE = 0x00000004
Global $SERVICE_CONTROL_SHUTDOWN = 0x00000005
Global $SERVICE_CONTROL_PARAMCHANGE = 0x00000006
Global $SERVICE_CONTROL_NETBINDADD = 0x00000007
Global $SERVICE_CONTROL_NETBINDREMOVE = 0x00000008
Global $SERVICE_CONTROL_NETBINDENABLE = 0x00000009
Global $SERVICE_CONTROL_NETBINDDISABLE = 0x0000000A
Global $SERVICE_CONTROL_DEVICEEVENT = 0x0000000B
Global $SERVICE_CONTROL_HARDWAREPROFILECHANGE = 0x0000000C
Global $SERVICE_CONTROL_POWEREVENT = 0x0000000D
Global $SERVICE_CONTROL_SESSIONCHANGE = 0x0000000E

; Service types
Global $SERVICE_KERNEL_DRIVER = 0x00000001
Global $SERVICE_FILE_SYSTEM_DRIVER = 0x00000002
Global $SERVICE_ADAPTER = 0x00000004
Global $SERVICE_RECOGNIZER_DRIVER = 0x00000008
Global $SERVICE_DRIVER = BitOR($SERVICE_KERNEL_DRIVER, _
$SERVICE_FILE_SYSTEM_DRIVER, _
$SERVICE_RECOGNIZER_DRIVER)
Global $SERVICE_WIN32_OWN_PROCESS = 0x00000010
Global $SERVICE_WIN32_SHARE_PROCESS = 0x00000020
Global $SERVICE_WIN32 = BitOR($SERVICE_WIN32_OWN_PROCESS, _
$SERVICE_WIN32_SHARE_PROCESS)
Global $SERVICE_INTERACTIVE_PROCESS = 0x00000100
Global $SERVICE_TYPE_ALL = BitOR($SERVICE_WIN32, _
$SERVICE_ADAPTER, _
$SERVICE_DRIVER, _
$SERVICE_INTERACTIVE_PROCESS)

; Service start types
Global $SERVICE_BOOT_START = 0x00000000
Global $SERVICE_SYSTEM_START = 0x00000001
Global $SERVICE_AUTO_START = 0x00000002
Global $SERVICE_DEMAND_START = 0x00000003
Global $SERVICE_DISABLED = 0x00000004

; Service error control
Global $SERVICE_ERROR_IGNORE = 0x00000000
Global $SERVICE_ERROR_NORMAL = 0x00000001
Global $SERVICE_ERROR_SEVERE = 0x00000002
Global $SERVICE_ERROR_CRITICAL = 0x00000003

;===============================================================================
; Description: Starts a service on a computer
; Parameters: $sComputerName - name of the target computer. If empty, the local computer name is used
; $sServiceName - name of the service to start
; Requirements: None
; Return Values: On Success - 1
; On Failure - 0 and @error is set to extended Windows error code
; Note: This function does not check to see if the service has started successfully
;===============================================================================
Func _StartService($sComputerName, $sServiceName)
Local $hAdvapi32
Local $hKernel32
Local $arRet
Local $hSC
Local $hService
Local $lError = -1

$hAdvapi32 = DllOpen("advapi32.dll")
If $hAdvapi32 = -1 Then Return 0
$hKernel32 = DllOpen("kernel32.dll")
If $hKernel32 = -1 Then Return 0
$arRet = DllCall($hAdvapi32, "long", "OpenSCManager", _
"str", $sComputerName, _
"str", "ServicesActive", _
"long", $SC_MANAGER_CONNECT)
If $arRet[0] = 0 Then
$arRet = DllCall($hKernel32, "long", "GetLastError")
$lError = $arRet[0]
Else
$hSC = $arRet[0]
$arRet = DllCall($hAdvapi32, "long", "OpenService", _
"long", $hSC, _
"str", $sServiceName, _
"long", $SERVICE_START)
If $arRet[0] = 0 Then
$arRet = DllCall($hKernel32, "long", "GetLastError")
$lError = $arRet[0]
Else
$hService = $arRet[0]
$arRet = DllCall($hAdvapi32, "int", "StartService", _
"long", $hService, _
"long", 0, _
"str", "")
If $arRet[0] = 0 Then
$arRet = DllCall($hKernel32, "long", "GetLastError")
$lError = $arRet[0]
EndIf
DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hService)
EndIf
DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hSC)
EndIf
DllClose($hAdvapi32)
DllClose($hKernel32)
If $lError <> -1 Then
SetError($lError)
Return 0
EndIf
Return 1
EndFunc

;===============================================================================
; Description: Stops a service on a computer
; Parameters: $sComputerName - name of the target computer. If empty, the local computer name is used
; $sServiceName - name of the service to stop
; Requirements: None
; Return Values: On Success - 1
; On Failure - 0 and @error is set to extended Windows error code
; Note: This function does not check to see if the service has stopped successfully
;===============================================================================
Func _StopService($sComputerName, $sServiceName)
Local $hAdvapi32
Local $hKernel32
Local $arRet
Local $hSC
Local $hService
Local $lError = -1

$hAdvapi32 = DllOpen("advapi32.dll")
If $hAdvapi32 = -1 Then Return 0
$hKernel32 = DllOpen("kernel32.dll")
If $hKernel32 = -1 Then Return 0
$arRet = DllCall($hAdvapi32, "long", "OpenSCManager", _
"str", $sComputerName, _
"str", "ServicesActive", _
"long", $SC_MANAGER_CONNECT)
If $arRet[0] = 0 Then
$arRet = DllCall($hKernel32, "long", "GetLastError")
$lError = $arRet[0]
Else
$hSC = $arRet[0]
$arRet = DllCall($hAdvapi32, "long", "OpenService", _
"long", $hSC, _
"str", $sServiceName, _
"long", $SERVICE_STOP)
If $arRet[0] = 0 Then
$arRet = DllCall($hKernel32, "long", "GetLastError")
$lError = $arRet[0]
Else
$hService = $arRet[0]
$arRet = DllCall($hAdvapi32, "int", "ControlService", _
"long", $hService, _
"long", $SERVICE_CONTROL_STOP, _
"str", "")
If $arRet[0] = 0 Then
$arRet = DllCall($hKernel32, "long", "GetLastError")
$lError = $arRet[0]
EndIf
DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hService)
EndIf
DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hSC)
EndIf
DllClose($hAdvapi32)
DllClose($hKernel32)
If $lError <> -1 Then
SetError($lError)
Return 0
EndIf
Return 1
EndFunc

;===============================================================================
; Description: Checks if a service exists on a computer
; Parameters: $sComputerName - name of the target computer. If empty, the local computer name is used
; $sServiceName - name of the service to check
; Requirements: None
; Return Values: On Success - 1
; On Failure - 0
;===============================================================================
Func _ServiceExists($sComputerName, $sServiceName)
Local $hAdvapi32
Local $arRet
Local $hSC
Local $bExist = 0

$hAdvapi32 = DllOpen("advapi32.dll")
If $hAdvapi32 = -1 Then Return 0
$arRet = DllCall($hAdvapi32, "long", "OpenSCManager", _
"str", $sComputerName, _
"str", "ServicesActive", _
"long", $SC_MANAGER_CONNECT)
If $arRet[0] <> 0 Then
$hSC = $arRet[0]
$arRet = DllCall($hAdvapi32, "long", "OpenService", _
"long", $hSC, _
"str", $sServiceName, _
"long", $SERVICE_INTERROGATE)
If $arRet[0] <> 0 Then
$bExist = 1
DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $arRet[0])
EndIf
DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hSC)
EndIf
DllClose($hAdvapi32)
Return $bExist
EndFunc

;===============================================================================
; Description: Checks if a service is running on a computer
; Parameters: $sComputerName - name of the target computer. If empty, the local computer name is used
; $sServiceName - name of the service to check
; Requirements: None
; Return Values: On Success - 1
; On Failure - 0
; Note: This function relies on the fact that only a running service responds
; to a SERVICE_CONTROL_INTERROGATE control code. Check the ControlService
; page on MSDN for limitations with using this method.
;===============================================================================
Func _ServiceRunning($sComputerName, $sServiceName)
Local $hAdvapi32
Local $arRet
Local $hSC
Local $hService
Local $bRunning = 0

$hAdvapi32 = DllOpen("advapi32.dll")
If $hAdvapi32 = -1 Then Return 0
$arRet = DllCall($hAdvapi32, "long", "OpenSCManager", _
"str", $sComputerName, _
"str", "ServicesActive", _
"long", $SC_MANAGER_CONNECT)
If $arRet[0] <> 0 Then
$hSC = $arRet[0]
$arRet = DllCall($hAdvapi32, "long", "OpenService", _
"long", $hSC, _
"str", $sServiceName, _
"long", $SERVICE_INTERROGATE)
If $arRet[0] <> 0 Then
$hService = $arRet[0]
$arRet = DllCall($hAdvapi32, "int", "ControlService", _
"long", $hService, _
"long", $SERVICE_CONTROL_INTERROGATE, _
"str", "")
$bRunning = $arRet[0]
DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hService)
EndIf
DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hSC)
EndIf
DllClose($hAdvapi32)
Return $bRunning
EndFunc

;===============================================================================
; Description: Creates a service on a computer
; Parameters: $sComputerName - name of the target computer. If empty, the local computer name is used
; $sServiceName - name of the service to create
; $sDisplayName - display name of the service
; $sBinaryPath - fully qualified path to the service binary file
; The path can also include arguments for an auto-start service
; $sServiceUser - [optional] default is LocalSystem
; name of the account under which the service should run
; $sPassword - [optional] default is empty
; password to the account name specified by $sServiceUser
; Specify an empty string if the account has no password or if the service
; runs in the LocalService, NetworkService, or LocalSystem account
; $nServiceType - [optional] default is $SERVICE_WIN32_OWN_PROCESS
; $nStartType - [optional] default is $SERVICE_AUTO_START
; $nErrorType - [optional] default is $SERVICE_ERROR_NORMAL
; $nDesiredAccess - [optional] default is $SERVICE_ALL_ACCESS
; $sLoadOrderGroup - [optional] default is empty
; names the load ordering group of which this service is a member
; Requirements: Administrative rights on the computer
; Return Values: On Success - 1
; On Failure - 0 and @error is set to extended Windows error code
; Note: Dependencies cannot be specified using this function
; Refer to the CreateService page on MSDN for more information
;===============================================================================
Func _CreateService($sComputerName, _
$sServiceName, _
$sDisplayName, _
$sBinaryPath, _
$sServiceUser = "LocalSystem", _
$sPassword = "", _
$nServiceType = 0x00000010, _
$nStartType = 0x00000002, _
$nErrorType = 0x00000001, _
$nDesiredAccess = 0x000f01ff, _
$sLoadOrderGroup = "")
Local $hAdvapi32
Local $hKernel32
Local $arRet
Local $hSC
Local $lError = -1

$hAdvapi32 = DllOpen("advapi32.dll")
If $hAdvapi32 = -1 Then Return 0
$hKernel32 = DllOpen("kernel32.dll")
If $hKernel32 = -1 Then Return 0
$arRet = DllCall($hAdvapi32, "long", "OpenSCManager", _
"str", $sComputerName, _
"str", "ServicesActive", _
"long", $SC_MANAGER_ALL_ACCESS)
If $arRet[0] = 0 Then
$arRet = DllCall($hKernel32, "long", "GetLastError")
$lError = $arRet[0]
Else
$hSC = $arRet[0]
$arRet = DllCall($hAdvapi32, "long", "OpenService", _
"long", $hSC, _
"str", $sServiceName, _
"long", $SERVICE_INTERROGATE)
If $arRet[0] = 0 Then
$arRet = DllCall($hAdvapi32, "long", "CreateService", _
"long", $hSC, _
"str", $sServiceName, _
"str", $sDisplayName, _
"long", $nDesiredAccess, _
"long", $nServiceType, _
"long", $nStartType, _
"long", $nErrorType, _
"str", $sBinaryPath, _
"str", $sLoadOrderGroup, _
"ptr", 0, _
"str", "", _
"str", $sServiceUser, _
"str", $sPassword)
If $arRet[0] = 0 Then
$arRet = DllCall($hKernel32, "long", "GetLastError")
$lError = $arRet[0]
Else
DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $arRet[0])
EndIf
Else
DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $arRet[0])
EndIf
DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hSC)
EndIf
DllClose($hAdvapi32)
DllClose($hKernel32)
If $lError <> -1 Then
SetError($lError)
Return 0
EndIf
Return 1
EndFunc

;===============================================================================
; Description: Deletes a service on a computer
; Parameters: $sComputerName - name of the target computer. If empty, the local computer name is used
; $sServiceName - name of the service to delete
; Requirements: Administrative rights on the computer
; Return Values: On Success - 1
; On Failure - 0 and @error is set to extended Windows error code
;===============================================================================
Func _DeleteService($sComputerName, $sServiceName)
Local $hAdvapi32
Local $hKernel32
Local $arRet
Local $hSC
Local $hService
Local $lError = -1

$hAdvapi32 = DllOpen("advapi32.dll")
If $hAdvapi32 = -1 Then Return 0
$hKernel32 = DllOpen("kernel32.dll")
If $hKernel32 = -1 Then Return 0
$arRet = DllCall($hAdvapi32, "long", "OpenSCManager", _
"str", $sComputerName, _
"str", "ServicesActive", _
"long", $SC_MANAGER_ALL_ACCESS)
If $arRet[0] = 0 Then
$arRet = DllCall($hKernel32, "long", "GetLastError")
$lError = $arRet[0]
Else
$hSC = $arRet[0]
$arRet = DllCall($hAdvapi32, "long", "OpenService", _
"long", $hSC, _
"str", $sServiceName, _
"long", $SERVICE_ALL_ACCESS)
If $arRet[0] = 0 Then
$arRet = DllCall($hKernel32, "long", "GetLastError")
$lError = $arRet[0]
Else
$hService = $arRet[0]
$arRet = DllCall($hAdvapi32, "int", "DeleteService", _
"long", $hService)
If $arRet[0] = 0 Then
$arRet = DllCall($hKernel32, "long", "GetLastError")
$lError = $arRet[0]
EndIf
DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hService)
EndIf
DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hSC)
EndIf
DllClose($hAdvapi32)
DllClose($hKernel32)
If $lError <> -1 Then
SetError($lError)
Return 0
EndIf
Return 1
EndFunc


Anonymous
Not applicable
Did you forgot the {computer} variable in the action line?
DanielH
Engaged Sweeper
I've followed these steps to the "T" and yet I'm receiving an error msg when I click the new vnc tool I've created in the Action Menu. When I click the new icon I'm asked if I would like to run "\\servername\c$\Lansweeper\remotevnclansweeper.exe" I click OK, the receive an AutoIt Error: Line -1:
Error: Unknown option or bad parameter specified.
Any ideas?