【问题标题】:Mounting ISO programmatically not working [closed]以编程方式安装 ISO 不起作用[关闭]
【发布时间】:2021-01-02 22:24:57
【问题描述】:

我正在尝试以编程方式挂载 ISO 映像,但它无法正常工作。我正在使用 PowerShell Mount-DiskImage 命令。这是我的代码:

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "PowerShell.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = "Mount-DiskImage -ImagePath" + imageFile;

我需要挂载 ISO 映像的原因是我可以简单地读取 ISO 的卷标。我还没有找到使用 C# 的任何其他方法。任何帮助表示赞赏。

【问题讨论】:

  • 请提供您遇到的错误。 “不工作”没有帮助。如果路径中有空格,请不要忘记将“imageFile”放在引号中。
  • 我没有收到错误消息,我什么也没有收到。我的代码的下一部分查看 ISO 以获取已安装驱动器的卷标,然后将其显示在文本框中。 imageFile 文本是一个变量,表示 ISO 的完整路径和文件名。
  • 你在重定向stdErr和stdOut吗? docs.microsoft.com/en-us/dotnet/api/…
  • 不,我没有重定向任何东西。
  • 这可能会解决您的问题:stackoverflow.com/a/29582801/696808

标签: c# powershell


【解决方案1】:

我遗漏了一个非常重要的部分:Process.Start(startInfo);

【讨论】:

    【解决方案2】:

    您的问题是ImagePath 参数之后和结束引号之前的一个简单空格

    startInfo.Arguments = "Mount-DiskImage -ImagePath " + imageFile;
    

    在 imagePath 周围添加引号以覆盖路径本身中的任何空格。

    startInfo.Arguments = "Mount-DiskImage -ImagePath \"" + imageFile + "\"";
    

    【讨论】:

    • 添加空间并没有解决问题。
    • @Tornado726 在 ImagePath 周围添加引号以确保考虑到空格。如果仍然失败,请先运行 powershell 命令,看看它是否真的有效。如果没有.. 提供错误信息
    • 我在 PowerShell 中手动运行了 Mount-DiskImage 命令,并且安装没有问题。
    • 您能否发布完整的代码,显示您如何运行 startinfo 对象以及错误。您可以删除隐藏 ProcessWindow 的行
    • imageFile 应该用双引号引起来,因为单引号是有效的路径字符:startInfo.Arguments = "Mount-DiskImage -ImagePath \"" + imageFile + "\"";
    猜你喜欢
    • 1970-01-01
    • 2015-08-10
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    相关资源
    最近更新 更多