关于环境变量

时间:2021-07-31 09:21:51
1.如何获得系统环境变量PATH的值?
2.如何获得一个程序的安装路径,比如VB6.EXE?
3.如何将一个路径写入到系统环境变量PATH值中?

17 个解决方案

#1


1、使用Environ函数

2、使用FindExecutable(API函数),最好在执行它之前,先建一个空的VBP文件,然后再使用该API,待获取路径后,再删除该VBP文件

3、Shell "cmd.exe set TEMP1 = " & """" & "C:\" & """"(这个没测试)

#2


1.比如我的机器上administrator的用户变量中PATH的值是E:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;
系统变量中PATH的值是E:\PROGRA~1\RATIONAL\RATION~1\NUTCROOT\bin;
使用Environ("path")函数得到的值为系统变量中path的值和administrator的用户变量中PATH的值连接后的字符串,现在我只想得到系统变量中PATH的值,怎么处理?

2.我想得到本地VB的安装路径,使用FindExecutable没有成功,还有“最好在执行它之前,先建一个空的VBP文件,然后再使用该API,待获取路径后,再删除该VBP文件”是什么意思?

3.我想把系统变量中PATH的值在现在的基础上修改一下,使用Shell "cmd.exe set TEMP1 = " & """" & "C:\" & """"没有成功。

#3


2. 访问注册表
VB6.EXE 属特殊情况,app.path便是其安装路径

#4


1 不太明白你的意思,????
Filter(Split(Environ("path"), ";"), "bin")(0)

#5


1楼正解哦

#6


第二题答案

Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long

Private Sub Command1_Click()
    Dim s As String * 260
    
    Open "C:\TESTFILE.vbp" For Output As #1
    
    Close #1
    
    FindExecutable "C:\TESTFILE.vbp", "", s
    
    MsgBox s
    
    Kill "C:\TESTFILE.vbp"
End Sub

#7


第三题看看这儿
http://www.china-askpro.com/msg41/qa21.shtml

#8


第3题:

http://www.tech-archive.net/Archive/VB/microsoft.public.vb.winapi/2004-04/0550.html

#9


首先谢谢大家帮助。
问题1、3已经解决。
关于问题2,使用FindExecutable函数得到的结果为e:\progra~1\geomed~1\Program\GEOMEDIA.EXE,而实际上我想得到的结果为:E:\Program Files\GeoMedia Professional\Program\GEOMEDIA.EXE,即需要完整的路径,还有没有其他的办法?

#10


s="e:\progra~1\geomed~1\Program\GEOMEDIA.EXE"
MsgBox Dir(s)

#11


那再使用这个API

Private Declare Function GetFullPathName Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, ByVal lpFilePart As String) As Long


如果想得到ShortPathName,则使用

Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long

#12


通过FindExecutable得到字符串:e:\progra~1\geomed~1\Program\GEOMEDIA.EXE
调用GetFullPathName("e:\progra~1\geomed~1\Program\GEOMEDIA.EXE",250,FileName,0)后FileName中得到的结果仍然为:e:\progra~1\geomed~1\Program\GEOMEDIA.EXE?是我写错了吗?

#13


也不知道你那里显示的东西是咋回事,我这里通过FindExecutable获得的路径都是Full File Path

#14


我检查了一下注册表,除了我指出的应用程序外,其他的应用程序的路径都是记录的FULL FILE PATH。

而在HKEY_LOCAL_MACHINE/SOFTWARE/MICROSOFT/WINDOWS/APP PATHS/GEOMEDIA.EXT/PATH中记录的是FULL FILE PATH,用API函数怎么能取出这个值?

#15


来这里找吧,当前用户的所有环境变量的注册表键值:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
所有的环境变量的键值都在了,读取注册表找吧


还有一个是所有用户的环境变量注册表键值,我给忘了,如果需要我再给你

#16


还是没有解决,还有没有其他答案?

#17


Sub GetGEOMEDIAPath()
MsgBox "GEOMEDIA.EXE安装路径:" & CreateObject("Wscript.Shell").RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\GEOMEDIA.EXE\Path")
End Sub

#1


1、使用Environ函数

2、使用FindExecutable(API函数),最好在执行它之前,先建一个空的VBP文件,然后再使用该API,待获取路径后,再删除该VBP文件

3、Shell "cmd.exe set TEMP1 = " & """" & "C:\" & """"(这个没测试)

#2


1.比如我的机器上administrator的用户变量中PATH的值是E:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;
系统变量中PATH的值是E:\PROGRA~1\RATIONAL\RATION~1\NUTCROOT\bin;
使用Environ("path")函数得到的值为系统变量中path的值和administrator的用户变量中PATH的值连接后的字符串,现在我只想得到系统变量中PATH的值,怎么处理?

2.我想得到本地VB的安装路径,使用FindExecutable没有成功,还有“最好在执行它之前,先建一个空的VBP文件,然后再使用该API,待获取路径后,再删除该VBP文件”是什么意思?

3.我想把系统变量中PATH的值在现在的基础上修改一下,使用Shell "cmd.exe set TEMP1 = " & """" & "C:\" & """"没有成功。

#3


2. 访问注册表
VB6.EXE 属特殊情况,app.path便是其安装路径

#4


1 不太明白你的意思,????
Filter(Split(Environ("path"), ";"), "bin")(0)

#5


1楼正解哦

#6


第二题答案

Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long

Private Sub Command1_Click()
    Dim s As String * 260
    
    Open "C:\TESTFILE.vbp" For Output As #1
    
    Close #1
    
    FindExecutable "C:\TESTFILE.vbp", "", s
    
    MsgBox s
    
    Kill "C:\TESTFILE.vbp"
End Sub

#7


第三题看看这儿
http://www.china-askpro.com/msg41/qa21.shtml

#8


第3题:

http://www.tech-archive.net/Archive/VB/microsoft.public.vb.winapi/2004-04/0550.html

#9


首先谢谢大家帮助。
问题1、3已经解决。
关于问题2,使用FindExecutable函数得到的结果为e:\progra~1\geomed~1\Program\GEOMEDIA.EXE,而实际上我想得到的结果为:E:\Program Files\GeoMedia Professional\Program\GEOMEDIA.EXE,即需要完整的路径,还有没有其他的办法?

#10


s="e:\progra~1\geomed~1\Program\GEOMEDIA.EXE"
MsgBox Dir(s)

#11


那再使用这个API

Private Declare Function GetFullPathName Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, ByVal lpFilePart As String) As Long


如果想得到ShortPathName,则使用

Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long

#12


通过FindExecutable得到字符串:e:\progra~1\geomed~1\Program\GEOMEDIA.EXE
调用GetFullPathName("e:\progra~1\geomed~1\Program\GEOMEDIA.EXE",250,FileName,0)后FileName中得到的结果仍然为:e:\progra~1\geomed~1\Program\GEOMEDIA.EXE?是我写错了吗?

#13


也不知道你那里显示的东西是咋回事,我这里通过FindExecutable获得的路径都是Full File Path

#14


我检查了一下注册表,除了我指出的应用程序外,其他的应用程序的路径都是记录的FULL FILE PATH。

而在HKEY_LOCAL_MACHINE/SOFTWARE/MICROSOFT/WINDOWS/APP PATHS/GEOMEDIA.EXT/PATH中记录的是FULL FILE PATH,用API函数怎么能取出这个值?

#15


来这里找吧,当前用户的所有环境变量的注册表键值:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
所有的环境变量的键值都在了,读取注册表找吧


还有一个是所有用户的环境变量注册表键值,我给忘了,如果需要我再给你

#16


还是没有解决,还有没有其他答案?

#17


Sub GetGEOMEDIAPath()
MsgBox "GEOMEDIA.EXE安装路径:" & CreateObject("Wscript.Shell").RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\GEOMEDIA.EXE\Path")
End Sub