2012-11-05 24 views
5

Ho uno script PowerShell che crea collegamenti alle posizioni di rete all'accesso. Sfortunatamente, sta usando una vecchia icona a bassa risoluzione. Non è un grosso problema in alcun modo, ma mi piacerebbe utilizzare le icone aggiornate nelle versioni successive di Windows.Come scegliere l'icona giusta "luogo della rete"?

Ecco la quota di competenza della funzione che crea il collegamento:

# Create the shortcut file 

$shortcut = (New-Object -ComObject WScript.Shell).Createshortcut("$shortcutFolder\target.lnk") 

$shortcut.TargetPath = $targetPath 
if (
$shortcut.IconLocation = "%SystemRoot%\system32\SHELL32.DLL, 275" 
$shortcut.Description = $targetPath 
$shortcut.WorkingDirectory = $targetPath 
$shortcut.Save() 

# Set attributes on the files & folders 
$desktopIni | Set-ItemProperty -Name Attributes -Value ([IO.FileAttributes]::System -bxor [IO.FileAttributes]::Hidden) 
$shortcutFolder | Set-ItemProperty -Name Attributes -Value ([IO.FileAttributes]::ReadOnly) 

Come si può vedere, è attualmente in uso Icona # 275 nella biblioteca SHELL32.DLL. In Windows 7, l'icona "corretta" sarebbe l'icona # 143 in imageres.dll. C'è un modo per ottenere i dettagli dell'icona dal sistema operativo come ottenere un riferimento a una cartella speciale nello spazio dei nomi di Explorer?

+0

Icona # 143 a imageres.dll non è OK per tu ? – JPBlanc

+0

Se lo script viene eseguito su un computer Windows XP, verrà visualizzata l'icona errata, poiché gli indici differiscono tra i build. – bshacklett

+0

Perché non testare il nome del sistema operativo e modificare il numero a scelta prima di creare il collegamento? –

risposta

6

Risorse di rete ha CLSID 208d2c60-3aea-1069-a2d7-08002b30309d

Sapendo questo, si può leggere il valore del Registro di default a HKEY_CLASSES_ROOT\CLSID\{208D2C60-3AEA-1069-A2D7-08002B30309D}\DefaultIcon

Il risultato sarà cioè %SystemRoot%\system32\imageres.dll,-25