[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[注册表类] [已解决]批处理监视注册表项

本帖最后由 wh1234567 于 2012-6-16 14:44 编辑

当监视某个注册表项名称数值为29时就执行我的命令,如果监视数值不是29就不执行命令,如何写?
例如
注册表项"HKEY_LOCAL_MACHINE\333" 里右边的名称"444" 里的数值29

我的命令放在下面
1

评分人数

    • zqz0012005: 感谢给帖子标题标注[已解决]字样PB + 2

TOP

这个看不懂啊

TOP

别整HKLM\333,那个地方建立不了新项,就整HKLM\Software\333吧。
  1. for /f "skip=4 tokens=1,2,*" %%i in ('reg query "HKLM\Software\333" /v 444') do set Ver=%%k
  2. if not %Ver%==29 goto :eof
  3. ::你的命令
  4. echo OK!Ver is 29.
  5. pause
复制代码

TOP

回复 3# wh1234567


    边看边试,就懂了。

TOP

你的目的是监视还是查询?

TOP

本帖最后由 wh1234567 于 2012-6-4 15:19 编辑

回复 4# tz_being

不行,闪了下就没了
另外说下,不是建立新项,而是监视那里的数值29

TOP

回复 6# powerbat

是监视

TOP

回复 8# wh1234567
vbs
  1. Hive = "HKEY_LOCAL_MACHINE"
  2. KeyPath = "Software\333"
  3. ValueName = "444"
  4. Set ws = CreateObject("WScript.Shell")
  5. Set Sink = WScript.CreateObject("WbemScripting.SWbemSink", "SINK_")
  6. Set objWMIServices = GetObject("winmgmts:" & _
  7.     "{impersonationLevel=impersonate}!\\.\root\default")
  8. objWMIServices.ExecNotificationQueryAsync Sink, _
  9.     "Select * from RegistryValueChangeEvent Where " & _
  10.     "Hive = '"&Hive&"' and " & _
  11.     "KeyPath = '"&Replace(KeyPath,"\","\\")&"' and " & _
  12.     "ValueName = '"&ValueName&"'"
  13. WScript.Echo "Listening for Registry Change Events..." & vbCrLf
  14. Do : WScript.Sleep 1000 : Loop
  15. Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext)
  16.     Value = ws.RegRead(Hive&"\"&KeyPath&"\"&ValueName)
  17.     'WScript.Echo Value
  18.     if CStr(Value)="29" then ws.Run "a.bat",0
  19. End Sub
复制代码
1

评分人数

TOP

回复  tz_being

不行,闪了下就没了
另外说下,不是建立新项,而是监视那里的数值29
wh1234567 发表于 2012-6-4 15:17


你注册表的这个地方HKLM\Software\333没有数值,当然自动退出了;如果有数值29就运行你的命令了

TOP

本帖最后由 wh1234567 于 2012-6-5 23:42 编辑

回复 10# tz_being


    有数值的,数值就是29也退出了不能执行a.bat

TOP

本帖最后由 wh1234567 于 2012-6-4 19:18 编辑

回复 9# powerbat


    我的命令放到哪,提示是英文看不懂啊
我的命令是a.bat这个吗?是代码不行还是我不会使用

TOP

最好的办法是不是在进程里全自动监视?

TOP

回复 12# wh1234567


    对。a.bat可用其他程序代替。

TOP

能不能弄成在进程里全自动监视的那种?当监视到数值变化到29就自动执行a.bat,不是运行一次监视一次,而是运行后就在进程里全自动监视

TOP

返回列表