gpt4 book ai didi

c++ - 如何从 32 位代码启动 64 位 Windows 进程?

转载 作者:可可西里 更新时间:2023-11-01 15:38:49 26 4
gpt4 key购买 nike

为了在写入 HKLM 注册表配置单元时在 Vista 中弹出 UAC 对话框,我们选择不使用 Win32 Registry 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 命令,因为它是一个使用 WOW 兼容层的 32 位应用程序! :( 如果 REG.EXE 从命令行运行,它会在 64 位模式下正确运行。这很重要,因为如果它作为 32 位应用程序运行,注册表项将因 registry reflection 而位于错误的位置。

那么有什么方法可以从 32 位应用程序以编程方式启动 64 位应用程序,而不是让它像其父 32 位进程一样使用 WOW64 子系统运行(即任务管理器中的“*”后缀) ?

最佳答案

试试这个(从 32 位进程):

> %WINDIR%\sysnative\reg.exe query ...

(发现 here )。

关于c++ - 如何从 32 位代码启动 64 位 Windows 进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/162309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com