1

ここで本当にばかげたファイルリダイレクトの問題が発生しており、解決策が見つからないようです。VB.net 2010 でプログラムを作成しました。.net Framework 4 と anyCPU を使用してコンパイルするように設定しました。32 ビット ビューを使用して HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run キーを列挙し、パスが存在するかどうかを確認しています。REG_EXPAND_SZ 値に達するまで、すべてがうまく機能します。たとえば、%programfiles%\Hewlett-Packard\HP Remote Solution\HP_Remote_Solution.exe のパスで file.exists を使用すると、ファイルが見つからないと表示されます。展開されたパスを確認すると、実際には Program Files (x86) ディレクトリにあるにもかかわらず、c:\Program Files\Hewlett-Packard\HP Remote Solution\HP_Remote_Solution.exe であることがわかります。問題は、%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
4

0 に答える 0