//traverse the list and invoke display on each item. function displayTableSegment(outerDiv, head) { var strMsg = "
%arg1%
"; var cnt = 1; var strHTML = ""; var tableElement = null; if (document.all[outerDiv].length == null) tableElement = document.all[outerDiv]; else tableElement = document.all[outerDiv][0]; if (head==null) tableElement.outerHTML = strMsg.replace(/%arg1%/, TAG_NONE); else { var curr = head; while (curr!=null) { if (document.all[outerDiv].length == null) tableElement = document.all[outerDiv]; else tableElement = document.all[outerDiv][0]; if (cnt%2 == 0) { if (tableElement.all["tr_" + outerDiv]) tableElement.all["tr_" + outerDiv].className = "sys-table-cell-bgcolor1"; cnt = 1; } else { if (tableElement.all["tr_" + outerDiv]) tableElement.all["tr_" + outerDiv].className = "sys-table-cell-bgcolor2"; cnt++; } curr.show(tableElement); strHTML += tableElement.outerHTML; curr = curr.getNext(); } tableElement.outerHTML = strHTML; } } ////////////////////// //MySoftwareItem function mySoftwareItemSetValues(name, pid) { this.m_name = name; this.m_pid = pid; } function mySoftwareItemShow(tableElement) { tableElement.all["name"].innerHTML = this.m_name; tableElement.all["pid"].innerHTML = this.m_pid; } function mySoftwareItem() { //private this.m_name = null; this.m_pid = null; this.m_next = null; //public this.setNext = new Function("ptr", "this.m_next = ptr;"); this.getNext = new Function("return this.m_next;"); this.setValues = mySoftwareItemSetValues; this.show = mySoftwareItemShow; } //EO MySoftwareItem ////////////////////// ////////////////////// //MySoftware function mySoftwareShow() { displayTableSegment("softwarems", this.m_head); } function mySoftware() { //private this.m_head = null; //public this.show = mySoftwareShow; var mspidInfo = new ActiveXObject("MSPIDInfo.MSPID"); var safearr = new VBArray(mspidInfo.GetPIDInfo(remoteServer)); //safearr has one dimension for(i=0; i<=safearr.ubound(1); i+=2) { var oSoftwareItem = new mySoftwareItem(); oSoftwareItem.setValues(safearr.getItem(i), safearr.getItem(i+1)); oSoftwareItem.setNext(this.m_head); //add before this.m_head = oSoftwareItem; } } //EO MySoftware ////////////////////// ////////////////////// //MyStartupGrItem function myStartupGrItemSetValues(name, installDt) { this.m_name = name; this.m_installDate = installDt; } function myStartupGrItemShow(tableElement) { tableElement.all["name"].innerHTML = this.m_name; tableElement.all["installDate"].innerHTML = this.m_installDate; } //constructor function myStartupGrItem() { //private this.m_name = null; this.m_installDate = null; this.m_next = null; //public this.getName = new Function("return this.m_name;"); this.setNext = new Function("ptr", "this.m_next = ptr;"); this.getNext = new Function("return this.m_next;"); this.setValues = myStartupGrItemSetValues; this.show = myStartupGrItemShow; } //EO myStartupGrItem ////////////////////// ////////////////////// //MyStartupGrItems function myStartupGrItemsShow() { displayTableSegment("startupGr", this.m_head); } function Populate(user, svcs) { strQuery = "select * from Win32_StartupCommand"; var colFiles = new Enumerator(svcs.ExecQuery(strQuery)); for(; !colFiles.atEnd(); colFiles.moveNext()) { var fileInst = colFiles.item(); if (fileInst.Command != "desktop.ini" && ( fileInst.User == user || fileInst.User == "All Users" || fileInst.User == ".DEFAULT")) { strCommand = fileInst.Command; //expand backslashes strCommand = strCommand.replace(/\\/g, "\\\\"); //now clean up spaces such as command line arguments, but not spaces in path, like Program Files if (strCommand.indexOf("\"",0) == -1) //we have non-quoted path, quoted paths will likely contain spaces { var arrCmd = strCommand.split(" "); strCommand = arrCmd[0]; } else { //split according to quotes (remove command line parameters assuming they're outside quotes var arrCmd = strCommand.split("\""); strCommand = arrCmd[1]; } var arrName = fileInst.Command.split("\\"); strQuery = "Select * from Cim_DataFile where Name = \"" + strCommand + "\""; var colItems = new Enumerator(svcs.ExecQuery(strQuery)); if (colItems.atEnd())//for some reason WMI didn't return information for this item... { var oStartupGrItem = new myStartupGrItem(); oStartupGrItem.setValues(fileInst.Name,TAG_UNKNOWN); oStartupGrItem.setNext(this.m_head); //add before this.m_head = oStartupGrItem; } else { for(; !colItems.atEnd(); colItems.moveNext()) { var inst = colItems.item(); var oStartupGrItem = new myStartupGrItem(); oStartupGrItem.setValues(fileInst.Name, getDateTime(inst.InstallDate)); oStartupGrItem.setNext(this.m_head); //add before this.m_head = oStartupGrItem; } } } } } //constructor function myStartupGrItems() { //private this.m_head = null; this.populate = Populate; //public this.show = myStartupGrItemsShow; var loc = wbemlocator; var svcs = loc.ConnectServer(remoteServer); svcs.Security_.impersonationlevel = wbemImpersonationLevelImpersonate; var strQuery = "Select * From Win32_ComputerSystem"; var colCompSys = new Enumerator(svcs.ExecQuery(strQuery)); if (!colCompSys.atEnd()) { var compSys = colCompSys.item(); if(compSys.UserName) this.populate(compSys.UserName, svcs); } } //EO MyStartupGrItems ////////////////////// ////////////////////// //MyLogEntry function myLogEntryShow(tableElement) { tableElement.all["datetime"].innerHTML = this.m_datetime; tableElement.all["desc"].innerHTML = this.m_desc; } function myLogEntry(timeGenerated, msg) { this.m_datetime = getDateTime(timeGenerated); this.m_desc = msg; this.m_next = null; this.setNext = new Function("ptr", "this.m_next = ptr;"); this.getNext = new Function("return this.m_next;"); this.show = myLogEntryShow; } //EO MyLogEntry ////////////////////// ////////////////////// //MyLog function myLogShow() { displayTableSegment("log", this.m_head); } function myLog() { this.m_head = null; this.show = myLogShow; var loc = wbemlocator; var svcs = loc.ConnectServer(remoteServer); svcs.Security_.impersonationlevel = wbemImpersonationLevelImpersonate; var strQuery = "Select TimeGenerated, Message From Win32_NTLogEvent Where SourceName = 'DrWatson'"; var colItems = new Enumerator(svcs.ExecQuery(strQuery)); for(; !colItems.atEnd(); colItems.moveNext()) { var inst = colItems.item(); with (inst) { var oLogEntry = new myLogEntry(TimeGenerated, Message); } oLogEntry.setNext(this.m_head); //add before this.m_head = oLogEntry; } } //EO MyLog ////////////////////// function DisplayLocStrings() { WaitMessage.innerHTML = MSG_WAIT; Refresh.innerHTML = TAG_REFRESH; with(Registered_Software.all) { Caption.innerHTML = TAG_SOFTWARE; Col1.innerHTML = TAG_REGSOFTWARE; Col2.innerHTML = TAG_PRODUCTIDENTIFICATION; } with(Startup_Program_Group.all) { Caption.innerHTML = TAG_STARTPROGGR; Col1.innerHTML = TAG_SOFTWARE; Col2.innerHTML = TAG_INSTALLDATE; } with(DrWatsonLog.all) { Caption.innerHTML = TAG_WATSONLOGCAPTION; Col1.innerHTML = TAG_DATETIME; Col2.innerHTML = TAG_DESCRIPTION; } } var INCR_UNIT = 100/3;//move progress bar in increments of INCR_UNIT function LoadChores(taskId) { try { switch(taskId) { case 0: remoteServer = ShowServerName(TAG_SOFTWARE); break; case 1: DrawProgressBar(INCR_UNIT, TAG_SOFTWARE); break; case 2: var oSoftware = new mySoftware(); //Installed MS Software oSoftware.show(); break; case 3: DrawProgressBar(INCR_UNIT * 2, TAG_STARTPROGGR); break; case 4: var oStartupGrItems = new myStartupGrItems; //Startup Logical Program Gr oStartupGrItems.show(); break; case 5: DrawProgressBar(INCR_UNIT * 3, TAG_WATSONLOG); break; case 6: var oLog = new myLog; //Dr Watson Log oLog.show(); break; default: taskId = -1; _header.style.display = "none"; _data.style.display = ""; _body.style.cursor= "default"; _body.scroll= "auto"; } if(taskId >= 0) window.setTimeout("LoadChores(" + ++taskId + ")", TIMEOUT); } catch (e) { HandleErr(e); } } function dispatchFunction() { _body.style.cursor= "wait"; _body.scroll= "no"; DisplayLocStrings(); SetProgressBarImage(); window.setTimeout("LoadChores(0)", TIMEOUT); }