具体来说,我想听一下程序运行的时间并记录下列信息:时间戳,可执行文件,Windows名称和用户。
答案 0 :(得分:1)
或者,使用WMI界面查找正在运行的内容并采取适当的措施。在下面的VBScript代码中,正在使用Select * from Win32_Process
查询WMI子系统,以便更改进程优先级。找出Win32_Process
可用的其他属性,你应该找到符合你想要的方向的东西。
Const NORMAL_PRIORITY = 32
Const LOW_PRIORITY = 64
Const REALTIME_PRIORITY = 128
Const HIGH_PRIORITY = 256
Const BELOWNORMAL_PRIORITY = 16384
Const ABOVENORMAL_PRIORITY = 32768
Function SetPriority( sProcess, nPriority )
Dim sComputer
Dim oWMIService
Dim cProcesses
Dim oProcess
Dim bDone
bDone = False
sComputer = "."
Set oWMIService = GetObject("winmgmts:\\" & sComputer & "\root\cimv2")
Set cProcesses = oWMIService.ExecQuery ("Select * from Win32_Process Where Name = '" & sProcess & "'")
For Each oProcess in cProcesses
oProcess.SetPriority( nPriority )
bDone = True
Next
SetPriority = bDone
End Function
答案 1 :(得分:1)
最糟糕的做法是Google桌面方式 即将您的DLL加载到每个已启动的进程中并记录信息 如果您对此感兴趣,请安装Google桌面并观看其dll加载到您的流程中。然后查看注册表以查看它是否成功 请注意,这正在进入类似行为的病毒领域。
答案 2 :(得分:1)
我会使用PSAPI函数EnumProcesses()定期获取正在运行的进程列表。
答案 3 :(得分:1)
您可以设置WMI永久事件订阅以监控进程创建并记录详细信息。我有一些示例here - 其中一个示例监视notepad.exe创建并将事件记录在txt文件中。永久事件订阅始终监视事件',但如果要在应用程序期间监视事件',则可以将WMI COM API与C ++一起使用 - 在这两种情况下,WQL事件查询都是相同的。文档为here。
答案 4 :(得分:0)
查看使用Perfmon API(查看MSDN以获取参考信息)。