welsonjs/lib/task-scheduler.js

98 lines
2.9 KiB
JavaScript
Raw Permalink Normal View History

2024-12-21 18:26:41 +00:00
// task-scheduler.js
// https://github.com/gnh1201/welsonjs
// Connect to Task Scheduler service
function connect() {
var service = CreateObject("Schedule.Service");
service.Connect();
return service;
}
// Get the root folder of Task Scheduler
function getRootFolder(service) {
return service.GetFolder("\\");
}
// Create a new task definition
function createTaskDefinition(service) {
return service.NewTask(0); // Flags = 0
}
// Set registration info for the task
function setRegistrationInfo(taskDefinition, description, author) {
var regInfo = taskDefinition.RegistrationInfo;
regInfo.Description = description;
regInfo.Author = author;
}
// Configure task settings
function configureTaskSettings(taskDefinition) {
var settings = taskDefinition.Settings;
settings.StartWhenAvailable = true;
}
// Create a registration trigger
function createRegistrationTrigger(taskDefinition) {
var triggers = taskDefinition.Triggers;
var trigger = triggers.Create(7); // 7 = Registration Trigger
trigger.ExecutionTimeLimit = "PT5M"; // Five minutes
trigger.Id = "RegistrationTriggerId";
}
// Add an action to execute a program
function addExecutableAction(taskDefinition, executablePath) {
var actions = taskDefinition.Actions;
var action = actions.Create(0); // 0 = Executable Action
action.Path = executablePath;
}
// Register the task in Task Scheduler
function registerTask(rootFolder, taskDefinition, taskName) {
rootFolder.RegisterTaskDefinition(
taskName,
taskDefinition,
6, // Task creation flags
null, // UserId
null, // Password
3 // LogonType
);
}
// Create and register the task
function createAndRegisterTask(service, rootFolder, taskName, executablePath, description, author) {
var taskDefinition = createTaskDefinition(service);
setRegistrationInfo(taskDefinition, description, author);
configureTaskSettings(taskDefinition);
createRegistrationTrigger(taskDefinition);
addExecutableAction(taskDefinition, executablePath);
console.log("Task definition created. About to submit the task...");
registerTask(rootFolder, taskDefinition, taskName);
console.log("Task submitted.");
}
function test() {
var service = connectToService();
var rootFolder = getRootFolder(service);
createAndRegisterTask(
service,
rootFolder,
"Test Registration Trigger",
"C:\\Windows\\System32\\notepad.exe",
"Start Notepad when the task is registered.",
"Author Name"
);
}
exports.connect = connect;
exports.getRootFolder = getRootFolder;
exports.createAndRegisterTask = createAndRegisterTask;
2024-12-21 18:27:35 +00:00
exports.test = test;
2024-12-21 18:26:41 +00:00
exports.VERSIONINFO = "Windows Task Scheduler Scripting Interface (task-scheduler.js) version 0.1";
exports.AUTHOR = "abuse@catswords.net";
exports.global = global;
exports.require = require;