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

前端之家收集整理的这篇文章主要介绍了c – 如何从32位代码启动64位的Windows进程?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在写入HKLM注册表配置单元时,要在Vista中弹出UAC对话框,我们选择不使用Win32注册表API,因为缺少Vista权限时,我们需要以管理员权限重新启动整个应用程序.相反,我们做这个技巧:
ShellExecute(hWnd,"runas" /* display UAC prompt on Vista */,windir + "\\Reg","add HKLM\\Software\\Company\\KeyName /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%\sysnative\reg.exe query ...

(发现here).

原文链接:https://www.f2er.com/c/115229.html

猜你在找的C&C++相关文章