You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell设置文件夹选项关闭显示隐藏文件不生效怎么办

问题成因
  • 注册表键值设置错误。HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced下的Hidden键值对应规则为:值为1时是勾选「显示隐藏的文件、文件夹和驱动器」,值为2时才是取消勾选、隐藏这类项目。你当前脚本写入的值为1,本身就是开启显示的配置,和你要实现的目标相反。
  • 缺少全局配置变更通知。仅遍历刷新当前已打开的资源管理器窗口,无法触发explorer全进程(包括托管桌面、导航窗格的后台explorer实例)重载注册表配置,系统也不会把文件夹选项变更的事件同步给所有相关系统组件,最终表现为注册表值已修改,但运行中的程序仍使用旧缓存配置,设置不生效。
修正后可直接运行的脚本

脚本逻辑为:写入正确的注册表值,调用系统API向所有顶层窗口广播设置变更事件,最后刷新所有资源管理器实例,无需强制重启explorer进程即可实时生效。

$regPath = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced'
# 目标配置:取消勾选显示隐藏项目,值设为2;如果需要开启显示,将值改为1即可
Set-ItemProperty -Path $regPath -Name Hidden -Value 2

# 调用系统API广播全局设置变更通知
Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
public class Win32 {
    [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    public static extern IntPtr SendMessageTimeout(
        IntPtr hWnd,
        uint Msg,
        UIntPtr wParam,
        string lParam,
        uint fuFlags,
        uint uTimeout,
        out IntPtr lpdwResult
    );
}
"@
$HWND_BROADCAST = [IntPtr]0xffff
$WM_SETTINGCHANGE = 0x001A
$SMTO_ABORTIFHUNG = 0x0002
$broadcastResult = [IntPtr]::Zero
[Win32]::SendMessageTimeout($HWND_BROADCAST, $WM_SETTINGCHANGE, [UIntPtr]::Zero, "Policy", $SMTO_ABORTIFHUNG, 5000, [ref]$broadcastResult) | Out-Null

# 刷新所有已打开的资源管理器窗口
$shell = New-Object -ComObject Shell.Application
$shell.Windows() | ForEach-Object { $_.Refresh() }

执行完成后打开文件夹选项查看,对应选项会自动同步为未勾选状态,所有位置的隐藏文件会立即隐藏。

内容的提问来源于stack exchange,提问作者TypeKG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:57:06