我Azure角色的启动任务调用一个.cmd文件:为什么从Azure启动任务中调用32位regsvr32?
<Startup>
<Task commandLine="startup.cmd" executionContext="elevated" taskType="simple"/>
</Startup>
.cmd文件中包含的regsvr32
invokation:
//startup.cmd
regsvr32 PathToMyComServer\MyComServer.dll
用于注册一个32位的进程内COM服务器。
现在在64位系统上有两个版本的regsvr32
--一个在SysWOW64文件夹中用于32位COM服务器,另一个在System32文件夹中用于64位COM服务器。当然,只有匹配版本的regsvr32
可以用于任何给定的进程内COM服务器。
当我登录到我的开发的Windows 2008箱,并从一个命令行的64位版本被调用运行regsvr32
,但是当我启动任务运行 - 无论是在计算仿真和实时云 - 在32位版本被调用并正确注册我的进程内COM服务器。这让我感到困惑。
为什么在Azure启动任务中调用32位版本的regsvr32
?
推测处理启动文件的应用程序是32位的。但我不知道为什么会这样。如果您只需要一种解决方法,请指定%SystemRoot%\ sysnative \ regsvr32而不仅仅是regsvr32。 –
我有兴趣知道答案,所以想请求,如果你有你的问题解决了,什么是根本原因..谢谢.. – AvkashChauhan
@Avkash:我目前没有可解决的问题 - 系统只是这样的行为,我只是考虑到了这一点。 – sharptooth