フォルダアイコンを適用する単純なdesktop.iniファイルがあります。ローカルフォルダでも問題なく動作します。
外付けハードドライブがネットワークに接続されているので、ネットワーク上の場所で機能させたいです。しかし desktop.ini
ファイルは上記のネットワークに影響を与えないようです。
私は何が間違っているのですか?
Windowsは、システムファイルでない限りdesktop.ini
を読み取りません(読み取り専用も機能するようですが、システムファイルは、システム以外の隠しファイルを表示に設定しても非表示のままにできることを意味します)。
Samba共有(SMB /ネットワーク共有プロトコルのUnix実装)では、たとえば、プロパティに移動して「読み取り専用」を設定した場合でも、無視されて設定されない場合があります。これは、Sambaがデフォルトでこれらのアクセス許可を保存していないためです-アクセス許可は(AFAIK)設定され、テキストデータとして代替ストリームで読み取られるため(おそらく無視できる)パフォーマンス税がかかるようです(おそらく、あなたがいる場合は機能しませんいくつかの基本的なFSなど [〜#〜] fat [〜#〜] )を共有します。
まず、共有定義に次の行を追加して、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
デスクトップ.iniを機能させるには、フォルダをシステムまたは読み取り専用としてマークする必要があります。システムフォルダはデフォルトでエクスプローラ検索から省略されるため、読み取り専用の方が優れています。 attrib + r(フォルダー名)
この記事を読んでください http://helpdeskgeek.com/how-to/customize-folder-icons-desktop-ini/
IconFile
フォルダのカスタムアイコンを指定する場合は、このエントリをアイコンのファイル名に設定します。 .icoファイル拡張子が推奨されますが、.bmpファイル、またはアイコンを含む.exeファイルと.dllファイルを指定することもできます。 相対パスを使用すると、ネットワーク経由でフォルダーを表示するユーザーがアイコンを使用できます。アイコンインデックスエントリも設定する必要があります。
つまり、アイコンへの相対パスを指定する必要があります
例:。/hiddenfolder/mycoolicon.ico
.icoフォルダーのディレクトリがdesktop.iniファイルの場所の外にある場合は、2つ(またはそれ以上)のドットを配置する必要があることに注意してください。Windows/ファイルエクスプローラーウィンドウを試して更新してみてください。
幸運を
問題は、フォルダを含むホストに関係しています。たとえばDroboなどの一部のネットワーク接続ストレージデバイス(NAS)は、Linuxで内部的に実行され、SAMBAネットワークシェルは標準のWindowsファイル属性(R、S、H、A、I)を尊重せず、正しく実装しません。
したがって、desktop.iniファイルが最初に読み取られない場合、相対パスは役に立ちません!!!
ホストデバイス、RAID、NASまたはドライブは、Windowsがdesktop.iniファイルの処理をトリガーすることを期待する「システム」または「読み取り専用」ビットを正しく報告しないため、ファイルは次のようになります。決して読まないで、その内容は重要ではありません。
この問題の解決策はまだ見つかりませんでした。
ファイルタイプ「システム」または「読み取り専用」を正しく報告するには、NASの「smb.conf」を変更する必要があります。 [グローバル]セクションに、次の行を追加します。
dos属性を保存=はい
楽しい !
M2C