• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

Connecting to All Users Desktop

J
#1
Hi

I have below code to change the icons of all shortcuts on All User Desktop.
Problem is I am connecting to All Users' Desktop twice, once using Namespace
and second using SpecialFolders. Is there a way to simplify code to connect
to All Users Desktop only once?

Sorry if it is dumb. I am very new to vbscript.

Many Thanks

Regards


Set oFS = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")

Const ALL_USERS_DESKTOP = &H19&
Set objShellApp = CreateObject("Shell.Application")
Set objFolder = objShellApp.Namespace(ALL_USERS_DESKTOP)

strFolder = objShell.SpecialFolders("AllUsersDesktop")
For Each objFile In oFS.GetFolder(strFolder).Files
If Right(LCase(objFile.Name), 4) = LCase(".lnk") Or
Right(LCase(objFile.Name), 4) = LCase(".url") Then
Set objFolderItem = objFolder.ParseName(objFile.Name)
Set oLink = objFolderItem.GetLink
oLink.SetIconLocation "C:\Windows\System32\SHELL32.dll", 109

oLink.Save
End If
Next
 

My Computer

A

Alex K. Angelopoulos

#2
John,

Actually, you're not really doing extra work per se, but if I understand you
correctly, you want to make the code look cleaner somehow. It's still
easiest to find the items by iterating through with the filesystemobject I
believe, but you can get the path directly from the shell.application
object, like this:

strFolder = objFolder.Self.path

As for dumb - you should see some of the things _I_ asked when I was first
starting out. You know the drill - the only dumb question is the one you
didn't ask. : )


"John" <info@xxxxxx> wrote in message
news:O7JvH9xoJHA.3840@xxxxxx

> Hi
>
> I have below code to change the icons of all shortcuts on All User
> Desktop. Problem is I am connecting to All Users' Desktop twice, once
> using Namespace and second using SpecialFolders. Is there a way to
> simplify code to connect to All Users Desktop only once?
>
> Sorry if it is dumb. I am very new to vbscript.
>
> Many Thanks
>
> Regards
>
>
> Set oFS = CreateObject("Scripting.FileSystemObject")
> Set objShell = CreateObject("WScript.Shell")
>
> Const ALL_USERS_DESKTOP = &H19&
> Set objShellApp = CreateObject("Shell.Application")
> Set objFolder = objShellApp.Namespace(ALL_USERS_DESKTOP)
>
> strFolder = objShell.SpecialFolders("AllUsersDesktop")
> For Each objFile In oFS.GetFolder(strFolder).Files
> If Right(LCase(objFile.Name), 4) = LCase(".lnk") Or
> Right(LCase(objFile.Name), 4) = LCase(".url") Then
> Set objFolderItem = objFolder.ParseName(objFile.Name)
> Set oLink = objFolderItem.GetLink
> oLink.SetIconLocation "C:\Windows\System32\SHELL32.dll", 109
>
> oLink.Save
> End If
> Next
>
>
 

My Computer

Users Who Are Viewing This Thread (Users: 1, Guests: 0)