1

具体来说,我想听听程序何时运行并记录以下信息:时间戳、可执行文件、Windows 名称和用户。

4

5 回答 5

1

或者,使用 WMI 界面找出正在运行的内容并采取适当的措施。在下面的 VBScript 代码中,正在查询 WMI 子系统Select * from Win32_Process以更改进程优先级。找出可用的其他属性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
于 2008-10-09T06:33:31.167 回答
1

这样做最淫秽的方式是谷歌桌面方式
,即让您的 DLL 加载到曾经启动的每个进程中并记录信息。
如果您更感兴趣,请安装 google 桌面并观察其 dll 加载到您的进程中。然后在注册表中查看它是否执行此操作。
请注意,这正在进入类似病毒的行为领域。

于 2008-10-09T09:02:20.400 回答
1

您可以设置 WMI 永久事件订阅来监视进程创建并记录详细信息。我这里有一些示例- 其中一个示例监视 notepad.exe 创建并将事件记录在 txt 文件中。永久事件订阅“始终”监视事件,但如果您想“在应用程序的持续时间内”监视事件,则可以使用带有 C++ 的 WMI COM API - WQL 事件查询在两种情况下都是相同的。文档在这里

于 2008-10-09T14:11:38.730 回答
1

我会使用 PSAPI 函数EnumProcesses () 来定期获取正在运行的进程列表。

于 2008-10-09T10:41:47.437 回答
0

研究使用 Perfmon API(查看 MSDN 以获取参考)。

于 2008-10-09T05:30:18.453 回答