c# - 无法通过进程启动启动 exe
问题描述
我正在尝试复制开始菜单,我可以毫无问题地获取所有应用程序的路径。并设法获得了快捷方式的目标 exe 路径。我可以毫无问题地启动其中的大多数,但其中一些(目前有一个,但我认为它们会更多)失败并出现以下错误
错误 =>“{hex} 处的指令引用了 {hex} 处的内存。无法读取内存”
我试过了
Process.Start(pathToMyExe);
ProcessStartInfo processStartInfo = new ProcessStartInfo(pathToMyExe);
processStartInfo.UseShellExecute = false;
processStartInfo.WorkingDirectory = Path.GetDirectoryName(pathToMyExe);
Process.Start(processStartInfo);
ProcessStartInfo processStartInfo = new ProcessStartInfo(@"C:\Windows\System32\cmd.exe");
processStartInfo.Arguments = "/c \"" + pathToMyExe + "\"";
Process.Start(processStartInfo);
其中一些返回了上述错误,有些则什么也没做。我要启动的文件是
Acrobat Reader DC
它位于
C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe
在我的机器上。它从开始菜单启动正常,如果我在资源管理器中双击它。
我已经查看了有关类似问题的所有其他问题,但似乎没有一种解决方案适用于此。任何人有任何解决这个问题的方法吗?
解决方案
以下在控制台应用程序和 WPF 应用程序中都可以正常工作。
var exePath = @"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe";
new Process {StartInfo = {FileName = exePath}}.Start();
推荐阅读
- wpf - 从 WinForms 应用程序控制 WPF 进度条
- python - 我当前对残差块的实现是否正确?
- reactjs - React JSX 条件渲染中断下拉列表
- javascript - 正则表达式匹配值数组
- c++ - 指向重载静态成员的函数指针 - 在 unique_ptr 中用作自定义删除器
- google-analytics - Analytics Reporting API 之前未在项目中使用过或已禁用
- android - 结合三个 ffmpeg 命令对 Android 中的主视频进行编码、文本、图像和视频
- android - 如何从项目中删除 android 库并将其放入 Github
- c# - MVC c#LINQ OrderByDescending isnt'working
- r - 使用 dplyr 进行动态过滤