Duke Yin's Technology database

Windows10 11 禁止程序在“此电脑”添加图标

很多无良的网盘、工具为了获取用户的点击量,会在“此电脑”显示盘符的界面添加自己的快捷入口,长此以往电脑看盘符的界面就会变成垃圾站。

点名迅雷、百度网盘、移动网盘、115网盘、Autodesk360网盘

此工具功能:

  • 删除现有的第三方图标
  • 禁止第三方程序再添加图标
  • 提供恢复功能

使用步骤:

新建文件并写入内容

run.bat

@echo off
:: 获取脚本目录
set SCRIPT_DIR=%~dp0

:: 检查是否以管理员身份运行
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo 正在以管理员身份重新启动...
    powershell -Command "Start-Process '%~f0' -Verb RunAs"
    exit /b
)

:: 调用 PowerShell 脚本,保持选择菜单
powershell -NoProfile -ExecutionPolicy Bypass -File "%SCRIPT_DIR%remove_icons.ps1"

pause

remove_icons.ps1

# remove_icons.ps1
# 功能:
# 1 - 删除非 DelegateFolders 项并设置只读权限
# 2 - 恢复管理员读写权限

$NameSpacePath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace"

# 提示用户选择
Write-Host "请选择操作:"
Write-Host "1 - 删除非 DelegateFolders 项并设置只读权限"
Write-Host "2 - 恢复管理员读写权限"
$choice = Read-Host "请输入 1 或 2"

switch ($choice) {

    "1" {
        # 删除 NameSpace 下除了 DelegateFolders 外的子项
        Get-ChildItem -Path $NameSpacePath | ForEach-Object {
            if ($_.PSChildName -ne "DelegateFolders") {
                try {
                    Remove-Item -Path $_.PSPath -Recurse -Force
                    Write-Host "Deleted: $($_.PSChildName)"
                } catch {
                    Write-Warning "Failed to delete: $($_.PSChildName) - $_"
                }
            }
        }

        # 设置 NameSpace 只读权限
        try {
            $acl = Get-Acl -Path $NameSpacePath
            $acl.SetAccessRuleProtection($true, $false)  # 移除继承

            # 清除现有权限
            $acl.Access | ForEach-Object { $acl.RemoveAccessRule($_) }

            # 添加只读规则
            $rule = New-Object System.Security.AccessControl.RegistryAccessRule(
                "Everyone", "ReadKey", "ContainerInherit,ObjectInherit", "None", "Allow"
            )
            $acl.AddAccessRule($rule)

            Set-Acl -Path $NameSpacePath -AclObject $acl
            Write-Host "已设置 NameSpace 为只读(所有用户)"
        } catch {
            Write-Warning "设置权限失败:$_"
        }

        Write-Host "操作完成。请重启资源管理器或系统以生效。"
    }

    "2" {
        # 恢复管理员完全控制权限
        try {
            $acl = Get-Acl -Path $NameSpacePath
            $acl.SetAccessRuleProtection($true, $false)  # 移除继承

            # 清除现有权限
            $acl.Access | ForEach-Object { $acl.RemoveAccessRule($_) }

            # 添加管理员完全控制权限
            $rule = New-Object System.Security.AccessControl.RegistryAccessRule(
                "Administrators", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow"
            )
            $acl.AddAccessRule($rule)

            Set-Acl -Path $NameSpacePath -AclObject $acl
            Write-Host "已恢复管理员对 NameSpace 的读写权限"
        } catch {
            Write-Warning "恢复权限失败:$_"
        }
    }

    default {
        Write-Host "输入无效,请重新运行脚本并选择 1 或 2"
    }
}

注意,remove_icons.ps1,要保存为UTF-8 无 BOM,在notepad++菜单选Encoding->UTF8-BOM再保存。

然后把两个文件放进同一个目录里,双击运行run.bat即可。

按照提示选择,选择1就能删除所有第三方图标并且设置权限,以后基本可以杜绝第三方添加图标;选择2能恢复权限,以备临时需要添加图标。

使用前记得备份注册表。

#

发布评论

评论

标注 * 的为必填项。