Já faz muito tempo desde que eu vi tanto touro :)
Clique com o botão direito do mouse -> Propriedades -> Personalizar ---> O ícone Alterar não está disponível nos compartilhamentos SMB.
... ---> Alterar imagem não tem efeito.
O Desktop.ini NÃO é processado pelo Windows para compartilhamentos SMB, porque o Linux interpreta o bit "Somente leitura" (da pasta) de maneira diferente e o reporta incorretamente ao Windows:
- No Linux, somente leitura significa somente leitura!
- No Windows, somente leitura (somente com pastas) significa processar o Desktop.ini !!!
Supõe-se que haja uma configuração de registro que force o processamento do Desktop.ini usando o sinalizador "Sistema" (super oculto) em vez de "Somente leitura", mas nunca consegui que ele funcionasse conforme o esperado.
A falta de processamento desktop.ini no SMB quebra muitas outras coisas, não apenas os ícones de pastas: links simbólicos e espaços de nomes personalizados também não funcionam. Os vagabundos da Microsoft estão se recusando a lidar com isso, desde o Windows NT.
É claro que sempre é possível criar links indiretos para acessar as pastas SMB e fornecer esses ícones personalizados, mas isso causa vários outros problemas:
- Os links de atalho são avaliados e armazenados em cache por padrão no Windows quando você abre a pasta pai, causando atrasos "maciços" no explorer se uma pasta contiver atalhos para retardar ou adormecer compartilhamentos de rede.
- Os atalhos no Windows são absolutos, não são relativos, portanto, não são portáteis. Isso cria muita manutenção caso o caminho raiz de destino seja alterado. O Windows também tem o hábito de converter automaticamente vars de ambiente em links absolutos, derrotando qualquer tentativa de contornar isso.
- O serviço "Cliente de rastreamento de link distribuído", que faz o cérebro das pessoas, estraga ainda mais as coisas.
A melhor maneira de implementar links relativos no Windows é usar o script VBS. No formato nativo (texto), o script VBS não terá um ícone personalizado, mas você pode atribuir um ícone personalizado ao arquivo EXE se compilá-lo.
Porém, isso é muito trabalhoso, e o script criará mensagens de aviso "não confiáveis" toda vez que você o iniciar a partir de uma rede, a menos que o script seja local ou você encontre uma maneira de assiná-lo.
VBS Relative Link example:
============================
' This is a VB Script, which emulates a RELATIVE file link/shortcut in Win XP
'
' 1) The first line declares an untyped variable ==> objshell
'
' 2) The second line instantiates a new object derived from ==> Shell.Application
'
' 3) The third line invokes the object's method ==> ShellExecute
'
' with the following parametters: "target path"
' "target's arguments"
' "starting directory"
' "action verb"
' Initial window mode: 0 = Hidden Window
' 1 = Normal Window
' 2 = Minimized
' 3 = Maximized
' 4 = Most recent size and position, keep active window active
' 5 = Current size and position
' 6 =
' 7 = Minimized, keep active window active
' 10 = Default state specified by target application
'
' 4) The last line frees/destroys the shell object
'
'
dim objShell
set objShell = CreateObject("Shell.Application")
objShell.ShellExecute _
"..\..\..\SomePath_Three_Dirs_UP_etc" ,_
"" ,_
"" ,_
"open" ,_
1
set objShell = nothing
===============================================================
desktop.iniopções