1

我正在尝试运行一个简单的批处理脚本来卸载 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 灾难性失败错误消息直接,我得到了相同的结果。

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

什么会导致这个?

4

2 回答 2

2

尝试编译您的应用程序。

转到 bin 文件夹。右键单击EXE文件并选择Run as Administrator

如果可行,只需从您的代码中分配管理员权限(如果可以的话)。

于 2013-07-23T20:34:01.100 回答
0

在运行之前尝试添加检查以查看您的文件是否存在。像这样的东西。

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.");
   }
}

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

于 2013-07-23T20:42:29.947 回答