我有一个第 3 方进程外 COM 服务器和一个试图激活它的客户端程序。我创建了两个:在 C# 和 C++ 上。当我使用 Ctrl-F5(以提升模式启动)从 VS2010 启动我的客户端程序(其中任何一个)时,客户端无法激活 COM 服务器。我收到“类未注册”错误。当我从命令行/Windows 资源管理器启动客户端时,客户端成功地执行了活动 COM 服务器。
所以我有一个 exe 模块,它在一种情况下工作(激活 COM 服务器),而在另一种情况下不工作(不活动 COM 服务器)。后一种情况是从 VS2010 运行模块时(不在调试中,仅通过 Ctrl-F5)。
这使我认为权限存在一些问题,因为模块在由 vs2010 启动时会继承其权限。
在 processprivileges.codeplex.com 的帮助下,我获得了两组权限:它不起作用的情况:IncreaseQuota => Disabled
Security => Disabled
TakeOwnership => Disabled
LoadDriver => Disabled
SystemProfile => Disabled
SystemTime => Disabled
ProfileSingleProcess = > Disabled
increaseBasePriority => Disabled
CreatePageFile => Disabled
Backup => Disabled
Restore => Disabled
Shutdown => Disabled
Debug => Enabled
SystemEnvironment => Disabled
ChangeNotify => Enabled RemoteShutdown =
>已禁用
Undock = > Disabled
ManageVolume => Disabled
Impersonate => Enabled
CreateGlobal => Enabled
increaseWorkingSet => Disabled
TimeZone => Disabled
CreateSymbolicLink => Disabled
当它工作时: Shutdown => Disabled
ChangeNotify => Enabled
Undock => Disabled
increaseWorkingSet => Disabled
TimeZone => Disabled
我看不到任何与 COM 激活相关的可疑特权。但我没有看到任何其他原因。
为什么进程外 COM 服务器在一种情况下被成功激活,而在另一种情况下没有被激活?