【问题标题】:Other way to put a path in quotes when using DirectoryInfo?使用 DirectoryInfo 时将路径放在引号中的其他方法?
【发布时间】:2018-01-06 18:58:03
【问题描述】:

我目前正在使用reg.exe,我正在创建一个使用reg.exe 作为Process.FileName 的进程。

当我尝试如下执行 reg.exe 时

REG EXPORT HKLM\\SOFTWARE\\Intel\\IntelAMTUNS D:\\Backups\\Test.reg

一切正常。

但是一旦我尝试像这样执行它

REG EXPORT HKLM\\SOFTWARE\\Intel\\IntelAMTUNS D:\\Backups\\Backup folder 1\\Test.reg 

什么也没发生——我知道为什么!目标路径没有放在引号中。一旦我这样做,一切都会再次正常。

我现在的问题是我将所有文件和文件夹路径作为DirectoryInfo 的实例来处理。当我将带有引号的路径作为字符串传递时,例如像这样

DirectoryInfo targetFolder = new DirectoryInfo("\"D:\\Backups\\Backup folder 1\\Test.reg\"")

我立即收到一个异常,告诉我给定路径的格式不受支持

有没有办法将路径放在引号中并且仍然可以使用 DirecotryInfo? 我真的需要将我的路径放在引号中 - 否则该命令将不起作用。

下面是一些示例代码:

DirectoryInfo backupPath = new DirectoryInfo("D:\\Backups\\Backup folder 1\\Test.reg");

Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();

startInfo.FileName = "reg.exe";
startInfo.CreateNoWindow = true;
startInfo.Arguments = "REG EXPORT HKLM\\SOFTWARE\\Intel\\IntelAMTUNS " + backupPath.FullName;

process.StartInfo = startInfo;
process.Start();
process.WaitForExit();

当我运行这段代码时,什么都没有发生——也没有错误或异常。 .reg 文件本身也没有创建。

当我尝试像这样运行它时

DirectoryInfo backupPath = new DirectoryInfo("\"D:\\Backups\\Backup folder 1\\Test.reg\"");

Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();

startInfo.FileName = "reg.exe";
startInfo.CreateNoWindow = true;
startInfo.Arguments = "REG EXPORT HKLM\\SOFTWARE\\Intel\\IntelAMTUNS " + backupPath.FullName;

process.StartInfo = startInfo;
process.Start();
process.WaitForExit();

我收到System.NotSupportedException 告诉我“不支持给定路径的格式。”但我实际上需要将路径放在引号中 - 否则命令本身将不起作用。 ..

【问题讨论】:

  • 你不是在路径中缺少一个结束引号吗?
  • 已编辑并添加了结束语!

标签: c# registry quotes directoryinfo


【解决方案1】:

您在错误的位置添加引号:DirectoryInfo 的构造函数无论如何都会剥离它们以标准化路径,因此您可以跳过添加它们:

var backupPath = new DirectoryInfo("D:\\Backups\\Backup folder 1\\Test.reg");

当您将backupPath.FullName 添加到参数时,您可以在路径周围强制使用引号,如下所示:

startInfo.Arguments = "REG EXPORT HKLM\SOFTWARE\Intel\IntelAMTUNS \"" + backupPath.FullName + "\"";

【讨论】:

    猜你喜欢
    • 2022-01-07
    • 2011-08-07
    • 2023-01-26
    • 2011-07-05
    • 2018-02-04
    • 2013-12-03
    • 2010-11-26
    • 2012-09-23
    • 1970-01-01
    相关资源
    最近更新 更多