ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Locating a user's Program Files (https://www.excelbanter.com/excel-programming/330918-locating-users-program-files.html)

Cush

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?


Dave Peterson[_5_]

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

Jim Cone

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?


Harald Staff

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



Dave Peterson[_5_]

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

Peter T

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



Dave Peterson[_5_]

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