找回密码
 加入
搜索
查看: 2455|回复: 14

请教各位大大们一个监视进程和注册表键值的问题。。(已解决)

[复制链接]
发表于 2009-8-11 15:50:08 | 显示全部楼层 |阅读模式
本帖最后由 dashe 于 2009-8-12 12:08 编辑

程序是这样的,,
我需要监视2个进程是否正在运行,如果进程被结束了,就重新启动计算机!!同时也监视注册表的一个启动项,如果那个启动项被删除的话,也重新启动计算机!!(这是为了防止网吧顾客结束收费软件进程和修改启动项后注销计算机后不让计费系统运行逃费用的,最好这个程序结束本身能需要密码,或者用组合键呼出后提示输入密码,密码输入正确后程序就自动结束,这样也方便我们维护!)

请大大们指导一下,小弟感激不尽,虚心向你们学习!!
发表于 2009-8-11 17:07:08 | 显示全部楼层
不难,给钱让人写吧.
不过你也真够傻,禁止注销不就解决了.
发表于 2009-8-11 17:07:55 | 显示全部楼层
不难,给钱让人写吧.
 楼主| 发表于 2009-8-11 17:56:07 | 显示全部楼层
禁止注销?现在系统都装好了怎么来禁止注销?全部机子还原都安装上了,就算你禁止了注销,我一台一台来改吗?难道别人没有其它的办法,进程终止怎么解决呢???

继续等达人指导,谢谢!!!
 楼主| 发表于 2009-8-11 20:00:59 | 显示全部楼层
难道就没人指导一下吗?就监视进程和注册表一个键值,程序结束需要密码实在麻烦的话就算了,,在线等。。。。
发表于 2009-8-11 21:20:21 | 显示全部楼层
这个简单判断一下就可以了吧
$reg = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'test')
While 1
        If ProcessExists("1.exe") = 0 And ProcessExists("2.exe") = 0 Then
                MsgBox(0, 0, ' 2个进程已全被关闭! ')
                ExitLoop
        EndIf
        If RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'test') <> $reg Then
                MsgBox(0, 0, ' 注册表已改变! ')
                ExitLoop
        EndIf
        Sleep(500)
WEnd
;Shutdown(6) ;重启
 楼主| 发表于 2009-8-11 22:19:53 | 显示全部楼层
本帖最后由 dashe 于 2009-8-11 22:22 编辑

谢谢afan大哥的指点,真的太感谢您了,每次都是您给我指导,让我学习了很多技术!!如果要让他同时监视2个进程,无论是结束哪一个进程或者2个进程都同时结束就自动重启呢,改如何写?

顺便再问一下afan大哥,如果要让这个程序禁止结束,或者结束需要密码的话,是不是很麻烦啊?我也想学习一下,能否指点一下呢?
发表于 2009-8-11 22:48:05 | 显示全部楼层
本帖最后由 afan 于 2009-8-11 22:49 编辑

呵呵,改一下条件And为Or即可; 热键密码结束也写了下~
#NoTrayIcon
HotKeySet("^!{F1}", "hc") ;Ctrl+Alt+F1 调出

$reg = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'test')
While 1
        If ProcessExists("1.exe") = 0 Or ProcessExists("2.exe") = 0 Then
                MsgBox(0, 0, ' 指定进程已被关闭! ')
                ExitLoop
        EndIf
        If RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'test') <> $reg Then
                MsgBox(0, 0, ' 注册表已改变! ')
                ExitLoop
        EndIf
        Sleep(500)
WEnd
;Shutdown(6) ;重启

Func hc()
        $mm = '1234' ;设置密码
        $a = InputBox("输入密码", "请输入密码 ", "", "*m", 300, 120)
        If $a = $mm Then
                MsgBox(64, 0, '密码正确,退出 ')
                Exit
        ElseIf $a <> '' then
                MsgBox(48, 0, '密码不正确')
        EndIf
EndFunc   ;==>hc
 楼主| 发表于 2009-8-11 22:59:33 | 显示全部楼层
再次感谢afan大哥了,又学习了一招,再请教您一下,要让这个程序不能强制结束只能用密码正常结束,autoit能不能做到呢?麻烦afan大哥了。。
发表于 2009-8-12 00:14:50 | 显示全部楼层
本帖最后由 afan 于 2009-8-12 12:35 编辑

容易实现点的就是用双程序互相监督,一个被结束则被另一个重新启动~

保护程序:
#NoTrayIcon
While 1
        If ProcessExists("主程序.exe") = 0 Then Run("主程序.exe") 
        Sleep(50)
WEnd
主程序:
#NoTrayIcon
HotKeySet("^!{F1}", "hc") ;Ctrl+Alt+F1 调出

$reg = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'test')
While 1
        If ProcessExists("1.exe") = 0 Or ProcessExists("2.exe") = 0 Then
                MsgBox(0, 0, ' 指定进程已被关闭。现在将重启! ')
                ProcessClose("保护.exe")
                ExitLoop
        EndIf
        If RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'test') <> $reg Then
                MsgBox(0, 0, ' 注册表已改变。现在将重启! ')
                ProcessClose("保护.exe")
                ExitLoop
        EndIf
        If ProcessExists("保护.exe") = 0 Then Run("保护.exe")
        Sleep(50)
WEnd
;Shutdown(6) ;重启

Func hc()
        $mm = '1234' ;设置密码
        $a = InputBox("输入密码", "请输入密码 ", "", "*m", 300, 120)
        If $a = $mm Then
                MsgBox(64, 0, '密码正确,退出 ')
                ProcessClose("保护.exe")
                Exit
        ElseIf $a <> '' Then
                MsgBox(48, 0, '密码不正确')
        EndIf
EndFunc   ;==>hc
 楼主| 发表于 2009-8-12 00:46:51 | 显示全部楼层
afan大哥,'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'test'
这里面的注册表键值应该是由双引号吧?单引号好像监视不到。。"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "test"
发表于 2009-8-12 01:14:38 | 显示全部楼层
afan大哥,'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'test'
这里面的注册表键值应该是由双引号吧?单引号好像监视不到。。"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVe ...
dashe 发表于 2009-8-12 00:46


这个没有影响,我都测试过了的~~
发表于 2009-8-12 02:32:03 | 显示全部楼层
非常复杂!!!
 楼主| 发表于 2009-8-12 12:07:49 | 显示全部楼层
哦,呵呵afan大哥的指导,小弟学会了,感谢afan大哥和各位指导我的朋友,谢谢!!
发表于 2009-8-16 11:53:21 | 显示全部楼层
学习学习中。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-7 05:47 , Processed in 0.086227 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表