为什么从C#应用程序运行批处理文件时会失败,而在其上运行时不会失败';他自己的

本文关键字:失败 运行时 自己的 他自己 应用程序 运行 批处理文件 为什么 | 更新日期: 2023-09-27 18:24:47

我正在尝试运行一个简单的批处理脚本来卸载windows更新。

@echo off
REM uninstall windows update 2592687
wusa /uninstall /kb:2592687 /norestart

当我从命令行运行它时,它运行良好,但是当从C#控制台应用程序运行时

static void Main(string[] args)
    {
        string path = Path.GetFullPath("..''..''kbunins.bat");
        ProcessStartInfo proc = new ProcessStartInfo(path);
        Process.Start(proc);
    }

我得到一个安装程序遇到错误:0x8000ffff灾难性失败错误消息我试过在谷歌上搜索那个错误消息,但找不到任何有用的东西,我试着用bat文件作为参数运行cmd.exe,我试过直接运行命令,但得到了同样的结果。

编辑:我已经构建了应用程序,并以管理员身份运行了安装程序,但更新仍然没有卸载。我还添加了File.Exists()位,它可以找到文件。

是什么原因造成的?

为什么从C#应用程序运行批处理文件时会失败,而在其上运行时不会失败';他自己的

尝试编译您的应用程序。

转到垃圾箱文件夹。右键单击EXE文件并选择以管理员身份运行

如果这样做有效,只需从代码中分配管理员权限(如果可以的话)。

在运行之前,尝试添加一个检查文件是否存在。像这样的东西。

static void Main(string[] args)
{
   string path = Path.GetFullPath(@"C:'Users'Me'Desktop'elloBatch.bat");
   if(File.Exists(path))
   {
      ProcessStartInfo proc = new ProcessStartInfo(path);
      Process.Start(proc);
   }
   else
   {
      Console.Write("File not at specified location.");
   }
}

此外,如果可能的话,我建议您将批处理添加到项目中(或将其放在与可执行文件相同的位置),并通过文件名引用它。