是这样子的,我想做一个后台监控软件,用于监控局域网内机器的情况我想禁止用户运行非管理员指定的程序,也就是说,只能让用户运行我自己指定运行的程序请问应该怎样写?谢谢
解决方案 »
- 求 VB6与Crystal report 10 的连接代码
- CSDN注册5周年,散分~~
- 新手做控件ActiveX,再提一问怎么使控件全屏。
- C#做的一个COM组件,在VB6.0中使用出现实时错误'91' 对象变量或With块变量未设置
- 请教高手问题
- 目前三层架构(three tier)多采用什么方式?
- 谁有关于SOAP 的小程序 让我长点见识!!
- 怎样唤醒休眠的电脑?
- 关于引用 Microsoft ActiveX Data Objects 2.7 Library
- 关于企业开发方案讨论
- 问大家个简单的问题 在VB中如何调用存储过程来实现对数据的增\删\改\查询
- 新建的任务计划不知为什么无法启动?请高手指点,100分,解决就给分!!!
簡單的就是改註冊表。
複雜的就是寫程序監控是不是指定的EXE。
最強的就是做成病毒軟件那樣,當成病毒來殺。
WINDOWS可以设置组策略禁止或限制运行的的,你在注册表里找找看
好像SHELL HOOK也可以
实在是高招,比监控省资源
如果用户启动允许的A程序,而A程序带有程序启动功能,(象一些桌面工具,)在A程序里用CREATPROCESS函数就能启动被禁止的B程序。所以只有靠给CREATEPROCESS函数挂钩或象上楼说的驱动程序(这个我不懂),才能真正实现这种功能
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMonitoredProcesses = objWMIService. _
ExecNotificationQuery("select * from __instancecreationevent " _
& " within 1 where TargetInstance isa 'Win32_Process'")
i = 0
Do While i = 0
Set objLatestProcess = colMonitoredProcesses.NextEvent
Wscript.Echo objLatestProcess.TargetInstance.Name
Loop
----------------------------------------
可以通过解析进程信息,然后得到这个进程的EXE文件名,从而可以进一步得到EXE文件大小及其其他信息。通过这些信息来判断。应该没有问题。
----------------------------------------特征码。加壳,解壳再特征码。不过似乎楼主是要运行他指定的程序,不是他指定的全kill了就可以了
Dim strComputer As String, strNameSpace As String
Dim WithEvents objSWbemSink As SWbemSinkPrivate Sub Form_Load()
Dim ProcName As String
ProcName = "Notepad.exe" '要监视的进程名
strComputer = "." '计算机名,.为本机
strNameSpace = "root\cimv2" '指定命名空间为root\cimv2
Set objSWbemSink = New SWbemSink
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\" & strNameSpace) '建立指定计算机、命名空间的WMI的SWbemServices 对象的引用
objSWbemServices.ExecNotificationQueryAsync objSWbemSink, "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'" 'and TargetInstance.Name='" & ProcName & "'"
End Sub '进程创建事件
Private Sub objSWbemSink_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet)
if objWbemObject.Properties_.Item("TargetInstance").Value.Properties_.Item("Name").Value ="notepad.exe" and objWbemObject.Properties_.Item("TargetInstance").Value.Properties_.Item("ExecutablePath").Value="c:\windows\noptepad.exe" then msgbox "文件找到" '这里其实你可以把需要检测的文件名和路径存在2个对应的集合里然后从验证文件名一样再验证如果路径一样的话就是找到了目标了
End Sub
然後偷偷的殺掉不是你指定的EXE文件的進程
(感覺在作賊一樣)