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

C# 为什么批处理文件在从C应用程序运行时会失败,而在其上运行时不会失败';他自己的?,c#,batch-file,console-application,C#,Batch File,Console Application,我正在尝试运行一个简单的批处理脚本来卸载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")

我正在尝试运行一个简单的批处理脚本来卸载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()位,它将查找该文件


什么会导致这种情况?

试着编译你的应用程序

转到bin文件夹。右键单击
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.");
   }
}

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

您是否使用管理员权限运行该应用程序?此外,我会验证您的应用程序在运行之前是否使用file.Exists找到了该文件。我以管理员身份运行Visual Studio,但它不起作用,我是否必须以管理员身份构建该应用程序并运行安装程序?