public RESTStatus TaskData(SQLLib sql, object dummy, NetworkConnectionInfo ni, string MachineID) { if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false) { ni.Error = "Access denied"; ni.ErrorID = ErrorFlags.AccessDenied; return(RESTStatus.Denied); } string guid = Guid.NewGuid().ToString(); PushData p = new PushData(); p.Action = "tasks"; p.ReplyID = guid; PushServiceHelper.SendPushService(MachineID, p, 0); PushDataResponse resp = PushServiceHelper.PopResponse(MachineID, 0, guid); if (resp == null) { ni.Error = "No response"; ni.ErrorID = ErrorFlags.NoData; return(RESTStatus.NoContent); } try { TaskDataList = JsonConvert.DeserializeObject <PushTaskManagerList>(resp.Data.ToString()); } catch { ni.Error = "Faulty data"; ni.ErrorID = ErrorFlags.NoData; return(RESTStatus.NoContent); } return(RESTStatus.Success); }
public static PushTaskManagerList GetTasks() { PushTaskManagerList tl = new PushTaskManagerList(); tl.Tasks = new List <PushTaskManagerListElement>(); ManagementClass mc = new ManagementClass("Win32_Process"); foreach (ManagementBaseObject mo in mc.GetInstances()) { PushTaskManagerListElement element = new PushTaskManagerListElement(); element.ProcessID = Convert.ToInt32(mo["ProcessId"]); element.Filename = Convert.ToString(mo["ExecutablePath"]); element.Arguments = Convert.ToString(mo["CommandLine"]); element.ProcessName = Convert.ToString(mo["Caption"]); element.SessionID = Convert.ToInt32(mo["SessionId"]); element.StartTime = ManagementDateTimeConverter.ToDateTime(Convert.ToString(mo["CreationDate"])).ToUniversalTime(); element.UserProcessorTime = TimeSpan.FromTicks(Convert.ToInt64(mo["UserModeTime"])); element.TotalProcessorTime = TimeSpan.FromTicks(Convert.ToInt64(mo["UserModeTime"]) + Convert.ToInt64(mo["KernelModeTime"])); element.WorkingSet = Convert.ToInt64(mo["WorkingSetSize"]); element.PrivateBytes = Convert.ToInt64(mo["VirtualSize"]); if (string.IsNullOrWhiteSpace(element.Filename) == false) { FileVersionInfo ver = FileVersionInfo.GetVersionInfo(element.Filename); element.CompanyName = ver.CompanyName; element.Description = ver.FileDescription; } element.Username = "******"; element.ParentProcessID = 0; element.IsWOWProcess = false; Process proc = Process.GetProcessById(element.ProcessID); IntPtr processHandle = IntPtr.Zero; try { if (OpenProcessToken(proc.Handle, 8, out processHandle) == true) { WindowsIdentity wi = new WindowsIdentity(processHandle); element.Username = wi.Name; ParentProcessUtilities pbi = new ParentProcessUtilities(); int returnLength; int status = NtQueryInformationProcess(proc.Handle, 0, ref pbi, Marshal.SizeOf(pbi), out returnLength); if (status == 0) { element.ParentProcessID = pbi.InheritedFromUniqueProcessId.ToInt32(); } IsWow64Process(proc.Handle, out element.IsWOWProcess); } } catch (Exception ee) { Debug.WriteLine(ee.ToString()); } finally { if (processHandle != IntPtr.Zero) { CloseHandle(processHandle); } } tl.Tasks.Add(element); } return(tl); }