我有一个简单的desktop.ini文件,它应用了一个文件夹图标。它在本地文件夹中运行良好。
我希望它能在网络位置工作,因为我们有一个外部硬盘连接到网络。但是,该desktop.ini
文件似乎对所述网络没有影响。
我究竟做错了什么?
答案1
为什么会发生这种情况
除非它是系统文件,否则Windows 不会读取它desktop.ini
(看似只读也可以,但系统文件意味着即使您将非系统隐藏文件设置为可见,它也可以保持隐藏状态)。
为什么你似乎无法解决这个问题
在 Samba 共享(SMB/网络共享协议的 Unix 实现)上,有时即使您转到属性并设置“只读”,它也会遭到忽略而不被设置。这是因为 Samba 默认不存储这些权限 - 这似乎会带来(可能微不足道的)性能损失,因为权限(据我所知)是以文本数据的形式在备用流中设置和读取的(如果您共享一些基本的 FS,例如胖的)。
如何修复
首先确保 Samba 存储 DOS 样式的权限(如“系统”),通过在共享定义中添加此行:
store dos attributes = yes
也许您可以将其添加到[Global]
,我已将其添加到特定共享。
另外,有些人会告诉你编辑错误的文件。
/usr/share/samba/smb.conf
<= 废话/etc/samba/smb.conf
<= 正确的文件
重新启动 Samba ( sudo service samba restart
),然后快速检查是否可以使用 Windows 资源管理器将文件设置为只读,以及它是否仍然存在。
好的,现在您可以创建desktop.ini
一个系统/隐藏文件。为此,请使用命令提示符转到它所在的文件夹,然后使用:
attrib +s +h desktop.ini
也可以选择(如果您的图标是相对的并且与我的图标存储在同一个文件夹中)。
attrib +s +h folder.ico
最后,您需要将文件夹本身标记为只读(没有意义而且听起来很愚蠢,所以您知道它是合法的)。
attrib +r .
当然,你可以(应该)编写脚本。使用 MSysGit 的 bash,我在整个 NAS 上执行了此操作:
find . -type f -iname desktop.ini | while read -r i; do
echo "Processing \"$(basename "${i%/*}")\""
attrib +s +h "$i"
attrib +s +h "${i%/*}/folder.ico" # Optional, in case you have these.
attrib +r "${i%/*}"
done
答案2
您必须将文件夹标记为系统或只读,才能使desktop.ini 正常工作。只读更好,因为默认情况下,系统文件夹会被从资源管理器搜索中省略。attrib +r(文件夹名称)
答案3
阅读这篇文章http://helpdeskgeek.com/how-to/customize-folder-icons-desktop-ini/
图标文件
如果要为文件夹指定自定义图标,请将此条目设置为图标的文件名。首选文件扩展名是 .ico,但也可以指定包含图标的 .bmp 文件或 .exe 和 .dll 文件。如果使用相对路径,则通过网络查看文件夹的人可以看到该图标。您还必须设置图标索引条目。
总之,你必须指定图标的相对路径
例如./hiddenfolder/mycoolicon.ico
请注意,如果 .ico 文件夹的目录位于 desk.ini 文件的位置之外,则可能需要放置两个(或更多)点 - 请尝试试验并刷新 Windows/文件资源管理器窗口。
祝你好运
答案4
如果您的 IconResource 位于网络位置,请尝试 "EnableShellShortcutIconRemotePath"=dword:00000001
设置
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer]
否则它是本地的,尝试cd
到文件夹并运行attrib +s .
(我发现attrib +r .
不起作用,但+s
起作用了)