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

.NET 3.1 WPF应用发布后无法通过System.IO启动ERP快捷方式

问题:WPF应用发布后启动ERP触发Catch分支,调试正常

背景

基于.NET 3.1开发的WPF应用,部署在公司自助终端电脑上,用于启动通过Microsoft Remote Desktop Client(MSRDC)运行的ERP系统及其他工具。此前通过System.IO.Directory查找MSRDC创建的ERP快捷方式,设置Process.StartInfo.UseShellExecute = true来支持.lnk文件启动,该方案稳定运行6个月。

现象

仅修改应用背景图片并发布后,启动ERP的逻辑进入catch分支:MSRDCW客户端弹出,但用户需额外点击按钮才能登录ERP。调试时功能完全正常,仅发布部署后出现该问题。

代码实现

try
{
    string upath = @"C:\Users\";
    string[] dirs = Directory.GetDirectories(upath, "kiosk*", SearchOption.TopDirectoryOnly);
    string[] timsdirs = Directory.GetDirectories($@"{dirs[0]}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\", "*timsv8*", SearchOption.TopDirectoryOnly);
    string[] timsfiles = Directory.GetFiles($@"{timsdirs[0]}", "*timsv8*", SearchOption.TopDirectoryOnly);
    Console.WriteLine("The number of directories within Users is {0}.", dirs.Length);
    Console.WriteLine(timsfiles[0]);
    Process process = new Process();
    process.StartInfo.UseShellExecute = true;
    process.StartInfo.FileName = timsfiles[0];
    process.Start();

}
//Launches MSRDCW in the event that TIMS .lnk file cannot launch
catch (Exception)
{
    Process.Start(@"C:\Program Files\Remote Desktop\msrdcw.exe");
}

排查与解决思路

  • 权限差异问题
    调试时使用的开发账户权限较高,发布后应用可能以终端的kiosk账户运行,该账户对C:\Users\kiosk*\AppData\Roaming路径的读取权限可能被变更。检查kiosk账户的路径读取权限,或在代码中添加权限检查日志,确认是否因权限导致目录/文件查找失败。

  • 路径查找的不确定性
    代码直接取数组第一个匹配项,若发布环境存在多个kiosk*或*timsv8*匹配项,会取到错误的快捷方式触发异常。优化筛选条件(比如指定快捷方式的完整名称),或添加日志记录所有匹配的目录/文件内容,确认是否存在多匹配项。

  • ShellExecute环境差异
    调试时ShellExecute的上下文是开发环境的桌面,发布后应用可能以非交互式桌面运行,导致.lnk文件无法正常解析。尝试将UseShellExecute设为false,用cmd.exe /c 快捷方式路径启动;或用Shell32等方法解析.lnk的目标路径,直接启动目标程序而非快捷方式。

  • 发布包意外变更
    虽仅修改背景图,但发布过程中可能误操作导致应用的配置文件、依赖项或运行身份设置变更。对比发布前后的应用包内容,确认除背景图外无其他变更;检查发布配置(如ClickOnce、部署脚本),确保运行身份、权限配置与之前一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:57:21