我的Azure角色启动任务正在调用一个.cmd文件:
<Startup>
<Task commandLine="startup.cmd" executionContext="elevated" taskType="simple"/>
</Startup>.cmd文件包含对regsvr32的调用
//startup.cmd
regsvr32 PathToMyComServer\MyComServer.dll用于注册32位proc服务器。
现在在64位系统中有两个版本的regsvr32 --一个在SysWOW64文件夹中用于32位COM服务器,另一个在System32文件夹中用于64位COM服务器。当然,只有匹配版本的regsvr32可以用于任何给定的-proc服务器。
当我登录到DevelopmentWindows2008框并从命令行运行regsvr32时,就会调用64位版本,但是当我的启动任务运行时--无论是在计算模拟器中还是在实时云中--32位版本都会被调用并正确注册我的invoked服务器。这让我很困惑。
为什么在Azure启动任务中调用32位版本的regsvr32?
发布于 2012-05-05 22:28:41
如下面的链接所述,请尝试在真实用户上下文中运行您的启动任务,这将解决此问题:
http://www.davidaiken.com/2011/01/19/running-azure-startup-tasks-as-a-real-user/
在Azure上,我尝试使用PxExec工具启动Regsvr32
psexec regsvr32 ->推出32位版本的regsvr32 psexec -s regsvr32 ->推出64位版本的regsvr32
在这两种情况下,psexec都是在运行Win2K2008 64位的Azure上以32位模式启动的。
这就是为什么我建议尝试在实际用户上下文中启动启动任务的原因,因为在我的64位计算机上,有限的用户权限,启动regsvr32.exe实际上启动32位REGSVR32,而在管理用户上下文中,相同的命令启动64位regsvr32。因为启动任务不是在实际用户上下文中启动的,所以我怀疑这可能是原因之一。
另一个选项是您也可以使用"PsExec -s“选项启动64位版本的regsvr32。
https://stackoverflow.com/questions/10460282
复制相似问题