[英]Write an xml document to group information from two different sub routines vb.net
我试图用通常的信息检索在机器上运行的所有进程; 进程ID,名称和内存使用情况。 即时尝试将其全部导出到一个xml文件下,但要获取所有信息,我必须使用2个单独的方法。
获取进程ID,名称和会话ID(进程所有者)我使用以下代码以及字典和类,使用名为Cassia的.net库。
Using server As ITerminalServer = manager.GetRemoteServer("Spartacus")
server.Open()
For Each process As ITerminalServicesProcess In server.GetProcesses()
If Not String.IsNullOrEmpty(process.ProcessId) Then
dictprocess.Add(process.ProcessId, New Processes(process.ProcessId, process.ProcessName, process.SessionId))
End If
Next
End Using
Dim sbProcess As New StringBuilder
sbProcess.AppendLine("<?xml version=""1.0""?>")
sbProcess.AppendLine("<Processes>")
For Each item As KeyValuePair(Of Integer, Processes) In dictprocess
sbProcess.AppendFormat("<Name>""{0}""<ProcessID>""{1}""</ProcessID><ProcessName>{2}</ProcessName><SessionID>{3}</SessionID></Name>", item.Key, item.Value.ProcessId, item.Value.ProcessName, item.Value.SessionId).AppendLine()
Next
sbProcess.AppendLine("</Processes>")
为了获得内存和页面文件的使用,我使用了wmi查询
Dim sbTest As New System.Text.StringBuilder
objWMI = GetObject("winmgmts:\\.\root\cimv2")
colObjects = objWMI.ExecQuery("Select * From Win32_Process")
For Each Item In colObjects
sbTest.AppendFormat("<ProcessID>""{0}""<ProcessName>""{1}""</ProcessName><MemoryUsage>{2}</MemoryUsage><PageFileUsage>{3}</PageFileUsage></ProcessID>", Item.ProcessID, Item.Name, (Item.WorkingSetSize / 1024), Item.PageFileUsage)
Next
我可以将结果写为两个单独的xml文件:
进程ID,名称和会话ID:
- <Processes>
- <Name>
"540"
<ProcessID>"540"</ProcessID>
<ProcessName>wininit.exe</ProcessName>
<SessionID>0</SessionID>
</Name>
- <Name>
"552"
<ProcessID>"552"</ProcessID>
<ProcessName>csrss.exe</ProcessName>
<SessionID>1</SessionID>
处理内存和页面文件用法
- <ProcessUsage>
- <ProcessID>
"540"
<ProcessName>"wininit.exe"</ProcessName>
<MemoryUsage>4080</MemoryUsage>
<PageFileUsage>1464</PageFileUsage>
</ProcessID>
- <ProcessID>
"552"
<ProcessName>"csrss.exe"</ProcessName>
<MemoryUsage>5600</MemoryUsage>
<PageFileUsage>2332</PageFileUsage>
</ProcessID>
正如您所看到的,每个xml中的唯一ID(进程ID)是相同的。 有什么方法可以编写xml,以便两种方法的信息都可以在一个标签下吗?
通常,您可以创建一个类,该类具有包含您要收集的所有数据的成员。 然后使用某种类型的容器(我会建议一个键入进程ID的字典)修改你的函数来获取所述容器。 如果在容器中找到进程ID,则更新所需的字段(如果未找到),请添加该条目。 然后循环通过容器并写入xml。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.