c++ - 拒绝用户运行某些已安装软件的访问权限

标签 c++ c windows registry wmi

我有一个已安装软件的列表,是从 WMI 类 select * from Win32_Product 获取的。
我想拒绝某些用户对某些软件的执行权限,如下所示:

  1. 查找已安装软件的路径
  2. 递归地删除执行权

我从 Win32_Product InstallLocation 列中找到了已安装软件的路径。但问题是,并非 Win32_Product 中的所有行都有 InstallLocation 值。我可以做什么来克服这个问题?在注册表中是否可以找到此路径?

最佳答案

一般来说,没有。最极端的情况是在 USB 磁盘上安装 Firefox。它不会在注册表或 Win32_Product InstallLocation 中留下任何痕迹。

根本原因是当路径不在注册表中时,Win32_Product InstallLocation 没有位置。它们本质上是对同一数据的两种 View 。

还有一个特殊问题,即某个产品甚至可能不需要执行权。例如,如果应用程序是用 Perl 编写的,则安装的“可执行文件”可能是 .pl 文件。然而,创建的 Win32 进程将注册为 .pl 扩展名的可执行文件,即 Perl 解释器。

关于c++ - 拒绝用户运行某些已安装软件的访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2780302/

相关文章:

c++ - OpenCV 让用户选择打开图像

c++ - C99 和 C++ 的内联函数的兼容定义

c++ - 如何区分 "move"和 "const ref&"的重载函数?

c - 如何使用 C 中的 for 循环将数字列表写入文件?

c - Fortran/C 互操作性将结构从 Fortran 传递到带有可分配项的 C

windows - wildfly/undertow 访问 Windows 证书存储

java - 如何从正在使用的文件中读取

当我不希望它被调用时,C++ 析构函数被调用

java - 在 C 中创建 jobobject 不起作用

c++ - 如何使 linux 命令行程序在 windows 中运行?