gpt4 book ai didi

windows - 为什么从 Azure 启动任务内部调用 32 位 regsvr32?

转载 作者:行者123 更新时间:2023-12-03 04:39:26 29 4
gpt4 key购买 nike

我的 Azure 角色启动任务正在调用 .cmd 文件:

<Startup>
<Task commandLine="startup.cmd" executionContext="elevated" taskType="simple"/>
</Startup>

.cmd 文件包含对 regsvr32 的调用:

//startup.cmd
regsvr32 PathToMyComServer\MyComServer.dll

用于注册 32 位进程内 COM 服务器。

现在,在 64 位系统上有两个版本的 regsvr32 - 一种位于 SysWOW64 文件夹中,用于 32 位 COM 服务器,另一种位于 System32 文件夹中,用于 64 位 COM 服务器。当然,只有 regsvr32 的匹配版本才能用于任何给定的进程内 COM 服务器。

当我登录到我的开发 Windows 2008 机器并从命令行运行 regsvr32 时,会调用 64 位版本,但是当我的启动任务运行时 - 无论是在计算模拟器中还是在实时云中- 调用 32 位版本并正确注册我的进程内 COM 服务器。这让我很困惑。

为什么在 Azure 启动任务中调用 32 位版本的 regsvr32

最佳答案

请尝试在真实用户上下文中运行启动任务,如下面的链接所述,这应该可以解决此问题:

http://www.davidaiken.com/2011/01/19/running-azure-startup-tasks-as-a-real-user/

在 Azure VM 上,我尝试使用 PxExec 工具启动 Regsvr32

psexec regsvr32 -> Launches 32bit version of regsvr32 psexec -s regsvr32 -> Launched 64bit version of regsvr32

在这两种情况下,psexec 都是在运行 Win2K2008 64 位的 Azure VM 上以 32 位模式启动的。

这就是为什么我建议尝试在真实用户上下文中启动启动任务的原因,因为在我的 64 位计算机上,用户权限有限,启动 regsvr32.exe 实际上会启动 32 位 REGSVR32,而在管理员用户上下文中,相同的命令会启动 64 位 regsvr32。由于启动任务不是在真实用户上下文中启动的,我怀疑这可能是原因之一。

另一个选项是您也可以使用“PsExec -s”选项来启动 64 位版本的 regsvr32。

关于windows - 为什么从 Azure 启动任务内部调用 32 位 regsvr32?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10460282/

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