reg_expand_sz键错误地重定向到错误的程序文件文件夹

时间:2013-01-03 00:31:42

标签: vb.net

我这里有一个非常愚蠢的文件重定向问题,似乎无法找到解决方案。我在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

0 个答案:

没有答案