我想隐藏desktop.ini
文件但保留其功能¹,保持全部Windows 8 及更高版本上可见的其他隐藏文件和受保护的系统文件。
原因是:我喜欢看到文件夹中发生的所有事情——除了桌面上那个烦人的文件,我创建的东西应该都放在那里。如果能有选择地隐藏这个文件和其他必要但烦人的文件,那就Thumbs.db
太好了。
禁用查看隐藏文件的设置的明显解决方案不是一个选择这里。
我知道一种适用于旧版 Windows 的方法,只需在桌面文件夹中切换“隐藏受保护的操作系统文件(推荐)”文件夹选项,其余系统文件夹则保持关闭状态。不幸的是,文件夹设置在更高版本中变为全局设置,因此这种方法不起作用。
我知道的另一个解决方案是完全阻止创建 desk.ini 文件:http://jamesisin.com/a_high-tech_blech/index.php/2010/09/nevermore-be-bothered-by-desktop-ini/
这很简单,但它会毁掉未来的桌面自定义。一旦创建密钥,您对桌面所做的更改将不会保留。
我想知道这些年来是否有人想出了另一种解决方案,让您可以有选择地隐藏(而不是删除)此类文件,保留其功能而不隐藏其他所有内容?
提前致谢!
¹我所说的“功能”是指无需用户操作即可保留桌面自定义更改,这是一种完全自动化的方式desktop.ini
。IE:要求用户在每次更改桌面时运行 .bat 或 .reg 文件来撤消/重新应用解决方案 2 并不是自动化的,所以这是不可能的。
答案1
如果你不介意使用第三方软件,我发现一个可行的解决方案是使用 Wise Folder Hider (https://www.wisecleaner.com/wise-folder-hider-free.html)。
此特定工具(至少在发布时)是免费的,并且可以在desktop.ini
不干扰文件功能的情况下隐藏文件(因此保留了桌面自定义)。我没有注意到使用它的任何负面影响。它似乎通过注册服务来工作。
只需安装并启动该工具,然后将desktop.ini
文件(我的情况是桌面上有两个)的完整路径添加到隐藏文件列表中即可。这样就可以了。
然而,缺点是,如果您想隐藏所有地方的desktop.ini
文件Thumbs.db
(不仅仅是桌面),这个工具实际上无法完成这项工作,因为您必须逐个隐藏文件。
答案2
看来这里的问题在于 Windows 对“隐藏”一词的定义。考虑到你问题的上下文,我怀疑是desktop.ini 文件仍然隐藏就 Windows 而言。“但我可以看到它。”是的……但文件仍然放隐藏。您所做的就是进入 Windows 资源管理器的视图设置,并告诉它忽略是否显示仍设置为隐藏的文件,无论其隐藏状态如何。这由半透明的“隐藏”文件表示。
这是一个全局设置,可以全局关闭或全局打开。实际上,有两个设置,一个仅适用于“系统文件”,例如分散在硬盘上的desktop.ini和thumbs.db文件。另一个适用于所有其他隐藏文件。这里就有一个选项...停止显示所有隐藏的系统文件,让非系统文件可见。这就是我的做法。毕竟,你不太可能手动弄乱 thumbs.db 或 desk.ini(事实上,也不应该这样做)。
我想,你可以将计算机文件系统上的所有其他隐藏系统文件更改为不再隐藏除了在您的桌面上删除desktop.ini,然后将全局设置改回隐藏。但这是隐藏单个文件的一种相当复杂的方法,下次您创建新文件夹并在其中放入一些图片/音乐时,Windows 将创建新的desktop.ini 和/或thumbs.db 隐藏文件。
您还可以隐藏桌面上的所有图标(从技术上讲,包括desktop.ini文件),方法是右键单击桌面上的空白处,转到查看,然后取消选中Show Desktop Icons
。我已经这样做了十年,但从未后悔过。桌面一直是每个应用程序随机垃圾的垃圾场,我只需使用Windows的开始菜单/快速启动/固定到任务栏功能即可。
除此之外,您还需要一些第三方工具来修改 Windows 桌面的工作方式(找到这种工具的可能性不大),或者用自己的替代品替换/覆盖桌面(找到这种工具的可能性不大,而且可能会产生比它解决的更多的问题)。
答案3
已经过去了很长一段时间,但 Windows 仍然是 Windows,它有那么多小问题,而且没有原生的方式来处理它们。与此同时,我使用了两种解决方案。两者都需要关闭将图标与网格对齐,这让我不太高兴,但是仍然......
这个想法是将文件拖到屏幕边界之外并将其保留在那里。
方法 1,DesktopOK
桌面好是一款小型便携式应用程序,可让您保存和恢复桌面布局。它非常方便,但不是自动化的。
要使用它来隐藏文件,您只需设置您的桌面,将文件拖走并保存布局,当布局由于某种原因发生变化时恢复它,提示desktop.ini重新出现。
方法 2、AHK 脚本
由于我正在使用自动热键对于其他调整,这是我目前的解决方案。这个是自动化的,按设定的时间间隔工作,并且可以编写为每次桌面布局更改时自动将文件移出屏幕,但我觉得它不是那么重要,以至于需要挂钩来监视更改。我更喜欢它,因为它很灵活,可以特别搜索desktop.ini文件并将它们拖走而不会触及其他桌面项目。
我已将导入此代码片段的脚本设置为在启动时加载,除了不时运行之外,还可以从上下文菜单中调用它,这对我来说已经足够了。
这是该脚本的独立版本。它基于这个帖子。
#NoEnv
#SingleInstance force
#Persistent
; =========================================================================================
; Tray Menu
Menu, Tray, NoStandard
Menu, Tray, Tip, % "Desktop.ini hide"
Menu, Tray, Add, &Hide desktop.ini, TrayMenu
Menu, Tray, Add
Menu, Tray, Add, &Reload App, TrayMenu
Menu, Tray, Add
Menu, Tray, Add, E&xit, TrayMenu
Menu, Tray, Default, &Hide desktop.ini
hideDesktopIni() ; Execute upon script load (startup)
; Run at intervals...
fn_hide := Func("hideDesktopIni").bind()
SetTimer, % fn_hide, % (0.5*60*60*1000) ; Time in ms, eg run every half hour
return ; End of auto-execute
; =========================================================================================
hideDesktopIni(x=6000, y=20) ; defaults...
{
Critical
static MEM_COMMIT := 0x1000, PAGE_READWRITE := 0x04, MEM_RELEASE := 0x8000
static LVM_GETITEMPOSITION := 0x1010, LVM_SETITEMPOSITION := 0x100F, WM_SETREDRAW := 0x000B
ControlGet, hwWindow, HWND,, SysListView321, ahk_class Progman
if !hwWindow ; #D mode
ControlGet, hwWindow, HWND,, SysListView321, A
IfWinExist ahk_id %hwWindow% ; last-found window set
WinGet, iProcessID, PID
hProcess := DllCall("OpenProcess" , "UInt", 0x438 ; PROCESS-OPERATION|READ|WRITE|QUERY_INFORMATION
, "Int", FALSE ; inherit = false
, "UInt", iProcessID)
if hwWindow and hProcess
{
ControlGet, list, list, Col1
VarSetCapacity(iCoord, 8)
pItemCoord := DllCall("VirtualAllocEx", "UInt", hProcess, "UInt", 0, "UInt", 8, "UInt", MEM_COMMIT, "UInt", PAGE_READWRITE)
Loop, Parse, list, `n
{
; Retrieve list of desktop items
SendMessage, %LVM_GETITEMPOSITION%, % A_Index-1, %pItemCoord%
DllCall("ReadProcessMemory", "UInt", hProcess, "UInt", pItemCoord, "UInt", &iCoord, "UInt", 8, "UIntP", cbReadWritten)
; Check name and move if matches
StringLower, deskIcon, A_LoopField
if (deskIcon = "desktop.ini") {
coordinates := (x & 0xFFFF) | ((y & 0xFFFF) << 16)
SendMessage, %WM_SETREDRAW%, 0, 0
SendMessage, %LVM_SETITEMPOSITION%, % A_Index-1, %coordinates%
SendMessage, %WM_SETREDRAW%, 1, 0
ret := true
}
}
DllCall("VirtualFreeEx", "UInt", hProcess, "UInt", pItemCoord, "UInt", 0, "UInt", MEM_RELEASE)
}
DllCall("CloseHandle", "UInt", hProcess)
return ret
}
; Custom tray menu
TrayMenu:
switch A_ThisMenuItem
{
case "&Hide desktop.ini":
hideDesktopIni()
return
case "&Reload App":
Reload
return
case "E&xit":
ExitApp
return
}
return
答案4
如果要隐藏它,请将其删除,然后在桌面上创建一个同名的文件夹(或其他文件)。Windows 将无法再次创建它。
这个问题对我来说并不重要,直到大约 2 个月前,Explorer 1) 开始将底部的图标行从屏幕边缘向上推,破坏了我的自定义布局,2) 将 desk.ini 文件移到屏幕左边缘,每次刷新桌面时都会创建新文件。好吧,在那之前,多年来,我一直将 desk.ini 文件放在混乱的中间,它一直留在那里。谢谢微软,一如既往地搞砸了 Windows——天哪,我们能说 Windows 8 吗?
所以,无论如何,就像我说的,我并不关心隐藏desktop.ini,直到windows更新资源管理器并强制它一直出现在左边缘。解决方案是创建您自己的desktop.ini作为文件夹,并将其移动到我想要的位置,这样它就可以留在那里,就像文件本身一样。