You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RDS主机打开Acrobat Reader后,菜单启动子进程获低完整性级别故障排查

问题诊断线索:Acrobat Reader导致菜单启动程序低完整性级别异常

我们的RDS主机上运行一套自定义VB.NET菜单系统,用于启动内部VB.NET/VB6应用,此前运行正常,但近期出现异常:用户打开Acrobat Reader后,通过该菜单启动的所有应用都会获得低完整性级别,导致程序运行失败,仅能通过注销登录解决。

用于启动应用的代码如下:

Dim PSI As New ProcessStartInfo
With PSI
    .Arguments = Arguments
    .WorkingDirectory = WorkingDirectory
    .FileName = Executable
    .UseShellExecute = True
End With

Dim P As Process = Process.Start(PSI)

' Executable:       "C:\Program Files\<path>\<appname>.EXE"
' Arguments:        "/NET=BHDMGR /USERLEVEL=3 /SYSLOG=False"
' WorkingDirectory: "C:\Program Files\<path>"

以下是具体调试线索:

  • 验证Acrobat保护模式的影响:Acrobat默认开启的「保护模式」会以低完整性级别运行,可能污染Shell启动上下文。尝试关闭Acrobat的保护模式(设置→安全性增强→取消勾选「启用保护模式」),重启Acrobat后测试问题是否消失。

  • 检查Shell启动与直接启动的差异:

    • 打开Acrobat后,直接在资源管理器中双击启动目标应用,查看其完整性级别是否正常。若资源管理器启动也异常,说明Shell被Acrobat的低完整性进程影响;若仅菜单启动异常,需检查菜单程序自身的进程状态。
    • 修改菜单代码,将UseShellExecute设为False,直接创建进程而非通过Shell启动,测试是否还会出现低完整性问题。
  • 强制指定启动程序的完整性级别:

    • 为菜单程序添加应用程序清单(App.manifest),明确指定requestedExecutionLevel为asInvoker(中完整性级别),确保菜单程序自身运行在正常级别:
      <requestedExecutionLevel level="asInvoker" uiAccess="false" />
      
    • 若UseShellExecute=False,可通过P/Invoke调用Windows API,显式设置新进程的完整性级别为中级别(需调用CreateProcess并指定令牌)。
  • 检查Acrobat的Shell扩展与进程注入:

    • 使用Autoruns工具查看系统中Acrobat相关的Shell扩展(右键菜单、预览窗格等),禁用后测试问题是否缓解。
    • 打开Acrobat前后,用Process Explorer查看菜单程序的完整性级别及加载的DLL,确认是否被Acrobat注入了低完整性的模块,导致进程令牌被修改。
  • 监控进程令牌的变化:

    • 使用Process Monitor跟踪菜单程序启动目标应用的过程,查看是否有Acrobat相关进程修改了菜单程序的环境变量或进程令牌,导致子进程继承低完整性。

内容的提问来源于stack exchange,提问作者Bmaster007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:16:47