【问题标题】:Adding a reg key from vb从 vb 添加 reg 密钥
【发布时间】:2014-08-03 12:13:01
【问题描述】:

我必须从 vb exe 添加一个 reg 密钥。

我以 cmd 形式运行这个字符串并且工作正常。

REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "bit" /t REG_SZ /d C:\ProgramData\i2.exe

所以在一个 vb 文件中我这样做了:

Shell("REG ADD ""HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"" /v ""bit"" /t REG_SZ /d C:\ProgramData\i2.exe")

但这会在错误的路径中添加一个 reg 键。

也许是一个sintax问题。我哪里失败了? vb中有更正确的命令吗?

【问题讨论】:

  • 我的水晶球说这最终会出现在 HKLM\Software\Wow6432Node 中。因为您的程序运行的是 32 位进程,所以它使用 32 位版本的 Reg.exe。它写入“错误”键,即 32 位应用程序使用的键。解决此问题的方法不止一种,包括什么都不做,下一个最简单的方法是将项目的 Platform 目标更改为 AnyCPU。

标签: vb.net cmd key registry


【解决方案1】:

.NET Framework 4 具有 RegistryKey 类,能够以独立于目标平台的方式处理 32/64 位注册表访问:

RegistryKey regkey =
    RegistryKey.OpenBaseKey(
        RegistryHive.LocalMachine,
        RegistryView.Registry64)
    .OpenSubKey("SOFTWARE")

更多信息可以在这里找到http://sander.rijken.info/post/46536267427/reading-64-bit-registry-from-32bit-app

如果你想知道系统是32位还是64位:

Private is64BitProcess As Boolean = (IntPtr.Size = 8)
Private is64BitOperatingSystem As Boolean = is64BitProcess OrElse InternalCheckIsWow64()

<DllImport("Kernel32.dll", SetLastError:=True, CallingConvention:=CallingConvention.Winapi)> _
Public Shared Function IsWow64Process( _
    ByVal hProcess As System.IntPtr, _
    ByRef wow64Process As Boolean) As <MarshalAs(UnmanagedType.Bool)> Boolean

End Function

Public Shared Function InternalCheckIsWow64() As Boolean
    If (Environment.OSVersion.Version.Major = 5 AndAlso Environment.OSVersion.Version.Minor >= 1) OrElse Environment.OSVersion.Version.Major >= 6 Then
        Using p As Process = Process.GetCurrentProcess()
            Dim retVal As Boolean
            If Not IsWow64Process(p.Handle, retVal) Then
                Return False
            End If
            Return retVal
        End Using
    Else
        Return False
    End If
End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 2021-02-23
    • 1970-01-01
    • 2020-11-28
    相关资源
    最近更新 更多