//////////////////////////////////////////////////////////////////////// // System API //////////////////////////////////////////////////////////////////////// var SHELL = require("lib/shell"); var WSH = CreateObject("WScript.Shell"); var WMI = GetObject("winmgmts:\\\\.\\root\\CIMV2"); var FSO = CreateObject("Scripting.FileSystemObject"); 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.getEnvString = function(envName) { return WSH.ExpandEnvironmentStrings('%' + envName + '%'); }; exports.get32BitFolder = function() { var base = exports.getEnvString("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\\"); return true; } catch (e) { return false; } }; exports.getOS = function() { try { var colItems = WMI.ExecQuery("SELECT * FROM Win32_OperatingSystem"); var enumItems = new Enumerator(colItems); var objItem = enumItems.item(); return objItem.Caption.rtrim(); } catch (e) {} }; exports.getDCName = function() { try { var DC = WSH.RegRead("HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Group Policy\\History\\DCName"); if (DC.length > 0) return DC; } catch (e) {} }; exports.getArch = function() { try { var colItems = WMI.ExecQuery("SELECT * FROM Win32_OperatingSystem"); var enumItems = new Enumerator(colItems); var objItem = enumItems.item(); return objItem.OSArchitecture; } catch (e) {} }; exports.getUUID = function() { try { var colItems = WMI.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct"); var enumItems = new Enumerator(colItems); var objItem = enumItems.item(); return objItem.UUID.toLowerCase(); } catch (e) {} }; exports.getCurrentWorkingDirectory = function() { try { cwd = SHELL.exec("cd", "cwd.txt").rtrim(); return cwd; } catch (e) {} }; exports.getDirName = function(path) { var delimiter = "\\"; var pos = path.lastIndexOf(delimiter); return (pos > -1 ? path.substring(0, pos) : ""); }; exports.getFileName = function(path) { var delimiter = "\\"; var pos = path.lastIndexOf(delimiter); return (pos > -1 ? path.substring(pos + delimiter.length) : ""); }; exports.getCurrentScriptDirectory = function() { if (typeof(WScript) !== "undefined") { return exports.getDirName(WScript.ScriptFullName); } else if (typeof(document) !== "undefined") { return exports.getDirName(document.location.pathname); } else { return "."; } }; exports.getCurrentScriptName = function() { if (typeof(WScript) !== "undefined") { return WScript.ScriptName; } else if (typeof(document) !== "undefined") { return exports.getFileName(document.location.pathname); } else { return ""; } }; exports.getNetworkInterfaces = function() { var wbemFlagReturnImmediately = 0x10; var wbemFlagForwardOnly = 0x20; var rows = []; var colItems = WMI.ExecQuery( "SELECT * FROM Win32_NetworkAdapterConfiguration", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly ); var enumItems = new Enumerator(colItems); for (; !enumItems.atEnd(); enumItems.moveNext()) { var objItem = enumItems.item(); rows.push({ Caption: (objItem.Caption || ""), IPAddress: (objItem.IPAddress || []).join(','), MACAddress: (objItem.MACAddress || "") }); } return rows; }; exports.getProcessList = function() { var wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2"); var query = "Select * From Win32_Process"; 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 false; }; exports.createShortcut = function(shoutcutName, fileName) { var workingDirectory = exports.getCurrentWorkingDirectory(); var desktopPath = WSH.SpecialFolders("Desktop"); var link = WSH.CreateShortcut(desktopPath + "\\" + shoutcutName + ".lnk"); link.IconLocation = fileName + ",1"; link.TargetPath = workingDirectory + "\\" + fileName; link.WindowStyle = 3; link.WorkingDirectory = workingDirectory; link.Save(); };