#!/usr/bin/perl -w # Modules use strict; use Win32::API; # Variables use vars qw($host $user $password $success $OpenSCManager $LockServiceDatabase); use vars qw($lock $OpenService $ChangeServiceConfig $SChandle $Shandle); use vars qw($UnlockServiceDatabase $CloseServiceHandle); # Constants use constant SC_MANAGER_ALL_ACCESS => 0x000F0000|0x0001|0x0002 |0x0004|0x0008|0x0010|0x0020; use constant SERVICE_CHANGE_CONFIG => 0x0002; use constant SERVICE_NO_CHANGE => 0xffffffff; # Change theese... $host="SOME_COMPUTER"; $user=".\\local_user_account"; $password="password_for_user"; # Import stuff $OpenSCManager = new Win32::API( "advapi32", "OpenSCManager", ["P", "N", "N"], "I"); if (! defined $OpenSCManager) { die "Can't import OpenSCManager"; } $LockServiceDatabase = new Win32::API( "advapi32", "LockServiceDatabase", ["I"], "I"); if (! defined $LockServiceDatabase) { die "Can't import LockServiceDatabase"; } $OpenService = new Win32::API( "advapi32", "OpenService", ["I", "P", "N"], "I"); if (! defined $OpenService) { die "Can't import OpenService"; } $ChangeServiceConfig = new Win32::API( "advapi32", "ChangeServiceConfig", ["I", "N", "N", "N", "P", "P", "N", "P", "P", "P", "P"], "N"); if (! defined $ChangeServiceConfig) { die "Can't import ChangeServiceConfig"; } $UnlockServiceDatabase = new Win32::API( "advapi32", "UnlockServiceDatabase", ["I"], "I"); if (! defined $UnlockServiceDatabase) { die "Can't import UnlockServiceDatabase"; } $CloseServiceHandle = new Win32::API( "advapi32", "CloseServiceHandle", ["I"], "I"); if (! defined $CloseServiceHandle) { die "Can't import CloseServiceHandle"; } $SChandle=$OpenSCManager->Call( $host, 0, SC_MANAGER_ALL_ACCESS); die "Failed to open service manager on $host" unless $SChandle; $lock=$LockServiceDatabase->Call( $SChandle); die "Failed to lock service database on $host" unless $lock; $Shandle=$OpenService->Call( $SChandle, "Schedule", SERVICE_CHANGE_CONFIG); die "Failed to open Task Scheduler on $host" unless $Shandle; $success=$ChangeServiceConfig->Call( $Shandle, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, 0, 0, 0, 0, $user, $password, "Task Scheduler"); print "Change status: "; print $success?"OK\n":"Failed\n"; $UnlockServiceDatabase->Call( $lock); $CloseServiceHandle->Call( $SChandle);