问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

【Win】如何在Windows隐藏安装的程序

创作时间:
作者:
@小白创作中心

【Win】如何在Windows隐藏安装的程序

引用
CSDN
1.
https://blog.csdn.net/u012153104/article/details/138857916

在Windows系统中,有时需要隐藏某些已安装程序,以防止非授权用户误操作或删除。本文将介绍几种实现这一目标的方法,包括通过注册表、PowerShell脚本以及组策略等途径。

实验环境

本教程基于Windows 10/11系统,使用控制面板和设置界面进行演示。

如何从设置/控制面板隐藏特定程序?

假设现在的任务是隐藏安装的7-zip的条目。打开控制面板,然后转到程序和功能部分。确保列表中存在 7-zip 23.01 (x64)的条目。

也可以在现代设置UI(设置 -> 应用 -> 安装的应用)中找到有关安装程序的信息。

可以通过Windows注册表隐藏安装应用程序的条目。但首先,需要了解Windows如何在控制面板中构建您看到的已安装程序列表。您可以在一个三个注册表键中的一个中找到有关安装应用程序的信息:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall– 所有设备用户的程序的通用列表;
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall– 这个注册表键包含在x64 Windows构建上安装的x86应用程序的条目;
  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall– 仅包含当前用户安装的应用程序。

Windows根据这些注册表键中的条目生成您在设置或控制面板中看到的已安装程序的列表。

在我的案例中,7-zip是安装到所有设备用户的程序,因此它的条目位于用户注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
中。

找到应用程序的注册表键(在示例中是7-zip),并创建一个新的32位DWORD注册表参数,名称为SystemComponent,值为1
SystemComponent = dword: 00000001

刷新安装程序列表窗口(按F5键)。7-zip的条目应该从列表中消失。

程序的条目也会从现代设置中的已安装程序列表中消失。

您可以从命令提示符隐藏程序。以下是可以在您的脚本和批处理文件中使用的此类命令的示例(此命令将隐藏安装的7-Zip归档程序):

REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\7-zip" /v SystemComponent /t REG_DWORD /d 1 /f

要再次使程序可见,只需删除SystemComponent参数(或使用命令:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\7-zip" /v SystemComponent /t REG_DWORD /d 0 /f

将其值更改为
0

注意
:系统应用程序,如C++的再发行包或.NET Framework的版本,不能以这种方式隐藏。

使用PowerShell脚本隐藏安装的应用程序

如果您需要一次性隐藏多个应用程序,可以使用以下PowerShell脚本。要隐藏的程序列表在AppsToHide变量中指定。然后,脚本检查所有注册表键,找到具有程序条目的键,并在每个键中创建一个值为1SystemComponent注册表参数(如果参数已经存在,则将其值更改为1)。

$RegPaths = @(
    "HKLM:Software\Microsoft\Windows\CurrentVersion\Uninstall\*",
    "HKLM:Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*",
    "HKCU:Software\Microsoft\Windows\CurrentVersion\Uninstall\*"
)
$AppsToHide = @(
    "*7-Zip*",
    "*Firefox*"
)
foreach ($App in $AppsToHide) {
    foreach ($Path in $RegPaths) {
        $AppKey = (Get-ItemProperty $Path -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -like $($App) }).PSPath
        if ($null -ne $AppKey) {
            $SystemComponent = Get-ItemProperty $AppKey -Name SystemComponent -ErrorAction SilentlyContinue
            if (!($SystemComponent)) {
                New-ItemProperty "$AppKey" -Name "SystemComponent" -Value 1 -PropertyType DWord
            }
            else {
                $SystemComponentValue = (Get-ItemProperty $AppKey -Name SystemComponent -ErrorAction SilentlyContinue).SystemComponent
                if ($SystemComponentValue -eq 0) {
                    Set-ItemProperty "$AppKey" -Name "SystemComponent" -Value 1
                }
            }
        }
    }
}

在示例中,脚本用于隐藏Firefox和7-zip应用程序。您可以通过GPO在域计算机上运行此PowerShell脚本。

如何隐藏所有安装的应用程序以防止其他用户查看?

您可以通过编辑本地组策略参数来完全隐藏用户控制面板中的所有安装程序。

打开本地组策略编辑器(gpedit.msc),转到用户配置 -> 管理模板 -> 控制面板 -> 程序,然后启用隐藏“程序和功能”页面隐藏程序控制面板的策略。

更新组策略设置,使用命令
gpupdate /force
,然后检查控制面板中的“程序和功能”窗口是否对用户不可见。

在控制面板中,应该显示消息
系统管理员已禁用“程序和功能”

在设置 – 应用 – 安装的应用 中,虽然仍然显示了对应的程序,但是无法修改和卸载。

也可以使用以下命令防止在Windows控制面板中显示安装的Windows程序的列表:

REG add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Programs" /v NoProgramsCPL /t REG_DWORD /d 1 /f
REG add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Programs" /v NoProgramsAndFeatures /t REG_DWORD /d 1 /f

结语

在考虑隐藏Windows系统中的安装程序时,建议根据个人或组织的特定需求慎重行事。虽然组策略提供了一种强大的方法来控制用户界面和系统行为,但它可能不是在所有情况下都适用的最佳解决方案。特别是,对于只想隐藏少数特定程序而非整个程序列表的用户来说,直接通过注册表进行逐一隐藏可能更为精准和有效。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号