如何使用Python监视Windows注册表的更改

奥利弗·维南(Oliver Wienand)

我想观看某个注册表项的更改,并在使用Python更改后立即执行一些自动操作,例如,程序在启动过程中更改了注册表项,而我想在此后立即将其强制为旧值。

奥利弗·维南(Oliver Wienand)

以下示例代码将强制计算器以日期时间模板开头,而不考虑最后使用的模板。它使用Python for Windows扩展,提供了一种真正快速的方法来访问大多数Windows内部组件并自动执行COM感知的应用程序:

import win32api
import win32con
import logging 
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s', filename='watchRegistry.log')
log = logging.getLogger()

hiveToWatch = win32con.HKEY_CURRENT_USER
keyToWatch = r'Software\Microsoft\Calc'

values = {(hiveToWatch, keyToWatch, 'DateTime'): (win32con.REG_DWORD, 1),
          (hiveToWatch, keyToWatch, 'Templates'): (win32con.REG_DWORD, 0),
          (hiveToWatch, keyToWatch, 'UnitConv'): (win32con.REG_DWORD, 0)}

while True:

    for (hive, key, valueName), (valueType, value) in values.items():
        handleWithSetRights = win32api.RegOpenKeyEx(hive, key, 0, win32con.KEY_SET_VALUE)
        log.info(r'Setting %s\%s\%s = %s' % (hive, key, valueName, value))
        win32api.RegSetValueEx(handleWithSetRights, valueName, 0, valueType, value)
        win32api.RegCloseKey(handleWithSetRights)

    # Open and close the handle here as otherwise the set operation above will trigger a further round
    handleToBeWatched = win32api.RegOpenKeyEx(hiveToWatch, keyToWatch, 0, win32con.KEY_NOTIFY)
    win32api.RegNotifyChangeKeyValue(handleToBeWatched, False, win32api.REG_NOTIFY_CHANGE_LAST_SET, None, False)
    win32api.RegCloseKey(handleToBeWatched)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何永久更改Windows注册表?

来自分类Dev

如何使用注册表或命令永久更改Windows 10显示设置?

来自分类Dev

如何使用PowerShell进行远程注册表更改?

来自分类Dev

您如何使用 powershell 跟踪注册表中的更改?

来自分类Dev

如何使用Java导出Windows注册表文件

来自分类Dev

如何从注册表更改高级设置

来自分类Dev

如何批量更改注册表值

来自分类Dev

Windows注册表| 如何打开.lnk

来自分类Dev

访问Windows注册表Python

来自分类Dev

使用Perl解析Windows注册表

来自分类Dev

通过Windows注册表更改Windows中的声音方案

来自分类Dev

Windows何时将注册表更改写入磁盘?

来自分类Dev

更改密钥后“刷新” Windows注册表

来自分类Dev

Windows 7 DVD启动-未保存注册表更改

来自分类Dev

如何还原和转储Windows注册表而不覆盖当前注册表

来自分类Dev

如何在Qt中添加/更改注册表?

来自分类Dev

如何在Qt中添加/更改注册表?

来自分类Dev

如何从命令行更改 regedit 注册表?

来自分类Dev

Windows注册表问题

来自分类Dev

通过python更改注册表无法正常工作

来自分类Dev

使用命令行更改注册表

来自分类Dev

使用Process Monitor跟踪注册表更改

来自分类Dev

使用Ruby / JRuby更改注册表值

来自分类Dev

如何使用Golang从Windows /注册表中返回默认值

来自分类Dev

如何使用通过.Net PowerShell对象运行的PowerShell脚本获取Windows注册表属性值?

来自分类Dev

如何使用额外的命令行参数将Windows终端添加到注册表?

来自分类Dev

如何在Windows 7中更改注册表项的权限?

来自分类Dev

如何在Windows 7中编辑注册表

来自分类Dev

如何通过策略更新Windows(通过注册表)

Related 相关文章

热门标签

归档