加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何从32位代码启动64位的Windows进程?

发布时间:2020-12-16 07:48:49 所属栏目:百科 来源:网络整理
导读:在写入HKLM注册表配置单元时,要在Vista中弹出UAC对话框,我们选择不使用Win32注册表API,因为缺少Vista权限时,我们需要以管理员权限重新启动整个应用程序.相反,我们做这个技巧: ShellExecute(hWnd,"runas" /* display UAC prompt on Vista */,windir + "Reg
在写入HKLM注册表配置单元时,要在Vista中弹出UAC对话框,我们选择不使用Win32注册表API,因为缺少Vista权限时,我们需要以管理员权限重新启动整个应用程序.相反,我们做这个技巧:
ShellExecute(hWnd,"runas" /* display UAC prompt on Vista */,windir + "Reg","add HKLMSoftwareCompanyKeyName /v valueName /t REG_MULTI_TZ /d ValueData",NULL,SW_HIDE);

该解决方案工作正常,除了我们的应用程序是32位,它运行REG.EXE命令,因为它将是一个32位应用程序使用WOW兼容性层! :(如果REG.EXE是从命令行运行的,它正常运行在64位模式,这很重要,因为如果它作为一个32位应用程序运行,注册表项将由于registry reflection而在错误的地方.

那么有没有办法通过32位应用程序以编程方式启动64位应用程序,而不是使用WOW64子系统(如其父级32位进程)(即任务管理器中的“*”后缀)来运行64位应用程序?

解决方法

尝试这个(从32位进程):
> %WINDIR%sysnativereg.exe query ...

(发现here).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读