![]() |
1
4
.NET应用程序可以在任何UAC完整性级别(包括系统级和低级)运行。 但是一个进程只有一个完整性级别(将完整性列添加到 Process Explorer 查看流程在完整性级别上的分布)。 如果尝试运行另一个Outlook实例,它只会将现有实例置于视图中,它会主动阻止两个实例运行。Word和Excel没有。 这些共同解释了你所看到的。当您实例化Word或Excel应用程序对象时,将以匹配的完整性级别运行新的工作或Excel进程。如果对Outlook执行此操作,并且Outlook已在运行,则它将尝试附加到现有进程。但这将失败,除非Outlook已经在高完整性下运行。您应该能够通过以管理员身份运行Outlook(即高完整性)并运行应用程序以附加到它来验证这一点。 要求用户以管理员身份运行Outlook是一个糟糕的主意(由于来自未知方的电子邮件附件存在风险,以高完整性运行Outlook只会导致恶意软件感染)。 最好的方法(这就是explorer等的方法)是将流程分成两部分,使用com标记只提升真正需要提升的应用程序部分。关于如何执行此操作,请参见本问题: How to UAC elevate a COM component with .NET |
![]() |
Dédé Lateur · 从用户字符串中拆分文件名和参数 7 年前 |
![]() |
c00000fd · 如何检查非“自”进程的组成员身份? 7 年前 |
![]() |
Basj · 在Windows启动时启动需要管理员权限的应用程序 7 年前 |
![]() |
Basj · 在C:\ProgramData中写入时权限/所有者问题\ 11 年前 |