我这里有一个非常愚蠢的文件重定向问题,似乎无法找到解决方案。我在VB.net 2010中编写了一个程序。我将它设置为使用.net Framework 4和anyCPU进行编译。我使用32位视图枚举HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run键,然后检查路径是否存在。一切都很好,直到我达到REG_EXPAND_SZ值。例如,如果我在以下路径中使用file.exists: %programfiles%\ Hewlett-Packard \ HP Remote Solution \ HP_Remote_Solution.exe,它会说找不到文件。当我看到路径扩展到什么时,我看到它是c:\ Program Files \ Hewlett-Packard \ HP Remote Solution \ HP_Remote_Solution.exe,即使它实际上位于Program Files(x86)目录中。所以问题是如何让%ProgramFiles%显示x86目录而不是64位目录?这是我的一些代码。
If Environment.Is64BitOperatingSystem = True Then
'64-BIT OS, HKLM, 32-BIT KEY
Dim fileName
Dim rbkey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32)
Dim rkey = rbkey.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
If Not rkey Is Nothing Then
For Each s As String In rkey.GetValueNames
If s <> "" Then
fileName = parsePath(rkey.GetValue(s)) 'parsePath will parse out the swithes
If File.Exists(fileName) Then
MsgBox(fileName & " exists")
Else
MsgBox(fileName & " not exists")
End If
End If
Next
End If
End If