我有一个已安装软件的列表,是从 WMI 类 select * from Win32_Product
获取的。
我想拒绝某些用户对某些软件的执行权限,如下所示:
- 查找
已安装软件的路径
- 递归地删除执行权
我从 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/