如何使desktop.ini 在网络位置上工作?

如何使desktop.ini 在网络位置上工作?

我有一个简单的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起作用了)

相关内容