检测win32服务创建和删除的最佳方法
best method to detect win32 services creation and deletion
我正在尝试构建一个使用c来监控服务的工具++我想在不连续使用EnumServicesStatusExW的情况下检测新添加的服务和服务的删除,并将结果数组与前一个进行比较
所以我使用了两个函数SubscribeServiceChangeNotifications,NotifyServiceStatusChangeA
我不知道哪个更好用,我在ProcessHacker的导入中看到了,但在导入中没有发现任何一个,所以我认为ph使用了不同的方法
SubscribeServiceChangeNotifications()
可以使用SC_EVENT_DATABASE_CHANGE
事件类型检测正在添加和删除的服务。此方法在Windows 8及更高版本中可用。
NotifyServiceStatusChange()
还可以使用SERVICE_NOTIFY_CREATED
和SERVICE_NOTIFY_DELETED
通知掩码来检测正在添加和删除的服务。此方法在Windows Vista及更高版本中可用。
否则,您可以监视HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices
注册表项的子项更改,例如使用REG_NOTIFY_CHANGE_NAME
筛选器的RegNotifyChangeKeyValue()
。此方法在Windows 2000及更高版本中可用。
因此,与其说是"哪种方法最好",不如说是"哪个方法适合我的应用程序运行的Windows版本"。你的应用程序可以利用这三种方法。通过GetProcAddress()
动态加载,或者编译器的延迟加载功能(如果有(,您可以在运行时检查DLL函数的存在,并采取相应的行动。如果SubscribeServiceChangeNotifications()
存在,则使用它;否则,如果NotifyServiceStatusChange()
存在则使用它,否则,如果存在RegNotifyChangeKeyValue()
则使用它。
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 在C++中向零方向近似的最佳方法
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 检测win32服务创建和删除的最佳方法
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 将线程中的数据存储到全局容器的最佳方法?
- 将一系列整数放入类的最佳方法是什么?
- 在派生类中使用基类的私有成员变量的最佳方法
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 比较两个节点坐标的最佳方法是什么?
- 在nodejs中使用本机代码的最佳方法是什么?
- 将 pybind11 绑定标记为已弃用的最佳方法
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- C++中变量混叠的最佳方法
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?