【问题标题】:Launching a file using Process.Start works, but adding conditions does not使用 Process.Start 启动文件有效,但添加条件无效
【发布时间】:2012-11-07 15:23:21
【问题描述】:

所以我尝试使用 C# 中的 cscript 启动打印机脚本,然后 cscript 启动一个 Visual Basic 文件。有点像菊花链(出于某些原因,我想保持这个菊花链完好无损)。

代码如下:

Process.Start("c:/windows/system32/cscript.exe c:/windows/System32/Printing_Admin_Scripts/en-US/prnport.vbs");

现在,当我只启动 cscript 时,没有问题。

但是,当我将 prnport.vbs 的条件添加到 cscript 启动时,我在 Visual Studio 中收到此错误:

"The system cannot find the file specified"

但我可以确认文件路径是正确的 - prnport.vbs DOES 存在于 /en-US 中。

那么我在这里做错了什么?使用 Process.Start 时能否不传递参数(在这种情况下,文件路径作为参数传递给 cscript.exe)?

C# 新手,对正确的方法感到困惑。

【问题讨论】:

    标签: c# process.start


    【解决方案1】:

    您必须单独指定要运行的文件的参数。试试Process.Start(string, string) overload

    Process.Start("c:/windows/system32/cscript.exe", 
        "c:/windows/System32/Printing_Admin_Scripts/en-US/prnport.vbs");
    

    【讨论】:

    • 正是这个。由于您在第一个参数中有两个文件,因此它将引号中的整个字符串视为一个文件参数 - 您必须记住文件名可以包含空格。
    • 如果在 Windows Vista 或更高版本上运行,文件系统重定向是否会成为问题?我只问是因为脚本在 \windows\system32 中。
    • @ChrisDunaway 真正的问题是从 64 位操作系统运行 32 位进程,在这种情况下,您需要查看 stackoverflow.com/questions/8585873/…
    【解决方案2】:

    这是一个参数,您需要使用另一个重载 Process.Start

    看看method's documentation

    Process.Start (String, String) 可以,如果您也需要的话,其他的也是可能的,并提供更大的灵活性。

    【讨论】:

      【解决方案3】:

      Process.Start 需要文件名作为第一个参数。参数在单独的参数中给出。

      【讨论】:

        猜你喜欢
        • 2015-10-17
        • 2020-03-15
        • 2011-02-19
        • 2020-05-17
        • 2021-08-26
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        • 1970-01-01
        相关资源
        最近更新 更多