![]() |
Locating a user's Program Files
I am able to locate a users desktop with the following code:
Set WSHShell = CreateObject("WScript.Shell") sPath = WSHShell.specialfolders("Desktop") I need something similar to locate the Program Files, which are not always located at C:\Program Files I tried: Set WSHShell = CreateObject("WScript.Shell") sPath = WSHShell.SpecialFolders("Program Files") both with and without the space, but it only turned up an empty string. sPath = WSHShell.SpecialFolders("Programs") returns : \Start Menu\Programs Any clues? Also, where can I find the object model for this? |
Locating a user's Program Files
This worked ok for me in WinXP (not sure it works in all versions of windows).
Option Explicit Sub testme01() MsgBox Environ("programfiles") End Sub But I searched *scripting* newsgroups and found something that was close to this: Option Explicit Sub testme02() Dim sPath As String Dim WSHShell As Object Set WSHShell = CreateObject("WScript.Shell") sPath = WSHShell.environment("Process")("ProgramFiles") If sPath = "" Then sPath = WSHShell.RegRead _ ("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\P rogramFilesDir") End If MsgBox sPath End Sub It looks like it tries to use the environment variable. If it doesn't find it, it goes and reads the registry. cush wrote: I am able to locate a users desktop with the following code: Set WSHShell = CreateObject("WScript.Shell") sPath = WSHShell.specialfolders("Desktop") I need something similar to locate the Program Files, which are not always located at C:\Program Files I tried: Set WSHShell = CreateObject("WScript.Shell") sPath = WSHShell.SpecialFolders("Program Files") both with and without the space, but it only turned up an empty string. sPath = WSHShell.SpecialFolders("Programs") returns : \Start Menu\Programs Any clues? Also, where can I find the object model for this? -- Dave Peterson |
Locating a user's Program Files
Absolutely essential download...
http://msdn.microsoft.com/library/de...ist/webdev.asp Microsoft Windows Script Downloads Jim Cone San Francisco, USA "cush" wrote in message ... I am able to locate a users desktop with the following code: Set WSHShell = CreateObject("WScript.Shell") sPath = WSHShell.specialfolders("Desktop") I need something similar to locate the Program Files, which are not always located at C:\Program Files I tried: Set WSHShell = CreateObject("WScript.Shell") sPath = WSHShell.SpecialFolders("Program Files") both with and without the space, but it only turned up an empty string. sPath = WSHShell.SpecialFolders("Programs") returns : \Start Menu\Programs Any clues? Also, where can I find the object model for this? |
Locating a user's Program Files
"Dave Peterson" skrev i melding
... This worked ok for me in WinXP (not sure it works in all versions of windows). Option Explicit Sub testme01() MsgBox Environ("programfiles") End Sub "Environ" is very limited in the Windows 9x family (95, 98, ME), but works fine in the NT family (NT, 2000, XP). If this is a problem, Randy Birch has code for this (and almost everything else) at http://vbnet.mvps.org/code/browse/csidl.htm it is VB6, so the Form parts has to be adjusted Best wishes Harald |
Locating a user's Program Files
Do you know if this would work in the 9x series?
If sPath = "" Then sPath = WSHShell.RegRead _ ("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\P rogramFilesDir") End If Thanks, Harald Staff wrote: "Dave Peterson" skrev i melding ... This worked ok for me in WinXP (not sure it works in all versions of windows). Option Explicit Sub testme01() MsgBox Environ("programfiles") End Sub "Environ" is very limited in the Windows 9x family (95, 98, ME), but works fine in the NT family (NT, 2000, XP). If this is a problem, Randy Birch has code for this (and almost everything else) at http://vbnet.mvps.org/code/browse/csidl.htm it is VB6, so the Form parts has to be adjusted Best wishes Harald -- Dave Peterson |
Locating a user's Program Files
Hi Dave,
Do you know if this would work in the 9x series? If sPath = "" Then sPath = WSHShell.RegRead _ ("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\P rogramFilesDir") End If Yes, that worked for me in W98SE when I ran your testme02 as posted earlier. sPath = WSHShell.environment("Process")("ProgramFiles") and MsgBox Environ("programfiles") both returned empty strings but without error. FWIW, I notice that besides "ProgramFilesDir" I also have "ProgramFilesPath", adjacent in the registry. Both show same path, as I would expect but wonder why the two keys. Regards, Peter T |
Locating a user's Program Files
I use winXP.
For me, HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Pro gramFilesDir contained a value of: C:\program files HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Pro gramFilesPath contained a value of: %ProgramFiles% which looks a lot like a way to refer to an environment variable. Like using Windows start button|run and typing: %temp% to get to the user's temp folder %programfiles% took me to my c:\program files folder. Peter T wrote: Hi Dave, Do you know if this would work in the 9x series? If sPath = "" Then sPath = WSHShell.RegRead _ ("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\P rogramFilesDir") End If Yes, that worked for me in W98SE when I ran your testme02 as posted earlier. sPath = WSHShell.environment("Process")("ProgramFiles") and MsgBox Environ("programfiles") both returned empty strings but without error. FWIW, I notice that besides "ProgramFilesDir" I also have "ProgramFilesPath", adjacent in the registry. Both show same path, as I would expect but wonder why the two keys. Regards, Peter T -- Dave Peterson |
All times are GMT +1. The time now is 02:01 PM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com