From 238420c637b0b515a66e908453acd95db10c016b Mon Sep 17 00:00:00 2001 From: "Namhyeon, Go" Date: Tue, 21 Jul 2020 15:30:18 +0900 Subject: [PATCH] Update bootstrap.js and relative files --- bootstrap.js | 14 ++++++----- lib/system.js | 68 ++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 67 insertions(+), 15 deletions(-) diff --git a/bootstrap.js b/bootstrap.js index 0737767..36da2f6 100644 --- a/bootstrap.js +++ b/bootstrap.js @@ -6,19 +6,21 @@ var PS = require("lib/powershell"); var REG = require("lib/registry"); +var SYS = require("lib/system"); +var SHELL = require("lib/shell"); return { main: function() { - // unlock file + // unlock file console.log("Starting unlock files..."); PS.execCommand("dir | Unblock-File"); - // import necessary registry - REG.importFromFile("app/assets/reg/Allow_ADO_CORS.reg"); - //REG.importFromFile("app/assets/reg/Add_URI_Scheme.reg"); + // import necessary registry + REG.importFromFile("app/assets/reg/Allow_ADO_CORS.reg"); + //REG.importFromFile("app/assets/reg/Add_URI_Scheme.reg"); - // register URI scheme - // todo + // register URI scheme + //REG.write(hKey, path, key, value, REG.STRING, computer); console.log("done"); } diff --git a/lib/system.js b/lib/system.js index 7d5f5d2..1000626 100644 --- a/lib/system.js +++ b/lib/system.js @@ -11,6 +11,43 @@ exports.VERSIONINFO = "System Module (system.js) version 0.1"; exports.global = global; exports.require = global.require; +exports.createProcess = function(cmd) { + var SW_HIDE = 0; + var pid = 0; + + var wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2") + var si = wmi.Get("Win32_ProcessStartup").SpawnInstance_(); + si.ShowWindow = SW_HIDE; + si.CreateFlags = 16777216; + si.X = si.Y = si.XSize = si.ySize = 1; + + //wmi.Get("Win32_Process").Create(cmd, null, si, pid); + var w32proc = wmi.Get("Win32_Process"); + + var method = w32proc.Methods_.Item("Create"); + var inParams = method.InParameters.SpawnInstance_(); + inParams.CommandLine = cmd; + inParams.CurrentDirectory = null; + inParams.ProcessStartupInformation = si; + + var outParams = w32proc.ExecMethod_("Create", inParams); + return outParams.ProcessId; +}; + +exports.getFilePath = function(path) { + return WSH.ExpandEnvironmentStrings(path); +}; + +exports.get32BitFolder = function() { + var base = JPTUDBSTOW.file.getPath("%WINDIR%"); + var syswow64 = base + "\\SysWOW64\\"; + + if (JPTUDBSTOW.FS.FolderExists(syswow64)) + return syswow64; + + return base + "\\System32\\"; +} + exports.isElevated = function() { try { WSH.RegRead("HKEY_USERS\\s-1-5-19\\"); @@ -97,18 +134,31 @@ exports.getNetworkInterfaces = function() { return rows; }; -exports.getCurrentProcesses = function() { - var processes = []; - var response = SHELL.exec("tasklist.exe"); +exports.getProcessList = function() { + var wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2"); + var query = "Select * From Win32_Process"; - var lines = response.split(/\r?\n/); - for(var i in lines) { - var line = lines[i]; - var values = line.split(' '); - processes.push(values); + return wmi.ExecQuery(query); +}; + +exports.killProcess = function(pid) { + var processes = exports.getProcessList(); + + var items = new Enumerator(processes); + while (!items.atEnd()) { + var proc = items.item(); + + try { + if (proc.ProcessId == pid) { + proc.Terminate(); + return true; + } + } catch (e) {} + + items.moveNext(); } - return processes; + return false; }; exports.createShortcut = function(shoutcutName, fileName) {