Vb.net 我是否正确使用了'Process'类

Vb.net 我是否正确使用了'Process'类,vb.net,Vb.net,我有一些代码: If StartProcess = True Then Dim startInfo As New ProcessStartInfo(Execution) If ProcessPath <> "" Then startInfo.WorkingDirectory = ProcessPath If ProcessArguments <> "" Then startInfo.Arguments = ProcessArguments

我有一些代码:

If StartProcess = True Then
    Dim startInfo As New ProcessStartInfo(Execution)
    If ProcessPath <> "" Then startInfo.WorkingDirectory = ProcessPath
    If ProcessArguments <> "" Then startInfo.Arguments = ProcessArguments
    NumProcesses += 1
    ExecutedProcesses(ProcessIndex) = Process.Start(startInfo)
    ProcessIndex += 1
    Executed = True
Else
    Executed = False
End If
如果StartProcess=True,则
Dim startInfo作为新流程startInfo(执行)
如果为ProcessPath“”,则startInfo.WorkingDirectory=ProcessPath
如果是ProcessArguments“”,则startInfo.Arguments=ProcessArguments
NumProcesses+=1
ExecutedProcess(ProcessIndex)=Process.Start(startInfo)
ProcessIndex+=1
已执行=真
其他的
已执行=错误
如果结束
我假设如果我将进程的路径(进程所在的目录)作为
startInfo.WorkingDirectory
的值,那么程序将尝试从该目录启动进程。这是真的吗

我假设如果我将进程的路径(进程所在的目录)作为startInfo.WorkingDirectory的值,程序将尝试从该目录启动进程。这是真的吗

那要看情况。根据这两个MSDN文档条目,有三种情况:

  • 如果
    UseShellExecute
    属性为
    True
    (默认)

    …WorkingDirectory属性指定可执行文件的位置。如果WorkingDirectory是空字符串,则当前目录将被理解为包含可执行文件

    • 如果您指定的进程路径是相对的(例如,
      myapp.exe
      ),它将在
      工作目录
      路径中查找进程。但是,如果进程路径是绝对路径(例如,
      C:\Program Files\My App\My App.exe
      ),它将从那里开始,并简单地让新进程的工作目录为您指定的目录
  • 如果
    UseShellExecute
    属性为
    False

    …WorkingDirectory属性不用于查找可执行文件。相反,它的值适用于已启动的流程,并且仅在新流程的上下文中具有意义

  • 进程的工作目录是计算为其当前文件夹的目录。例如,如果在Windows 7中启动命令提示符(cmd),其工作目录通常是您的用户路径(例如
    C:\Users\Vincent
    )。而如果您以管理员身份启动cmd,则工作目录将是
    C:\Windows\System32


    顺便说一句,你的这些支票是毫无用处的:

    If ProcessPath <> "" Then startInfo.WorkingDirectory = ProcessPath
    If ProcessArguments <> "" Then startInfo.Arguments = ProcessArguments
    
    我假设如果我将进程的路径(进程所在的目录)作为startInfo.WorkingDirectory的值,程序将尝试从该目录启动进程。这是真的吗

    那要看情况。根据这两个MSDN文档条目,有三种情况:

  • 如果
    UseShellExecute
    属性为
    True
    (默认)

    …WorkingDirectory属性指定可执行文件的位置。如果WorkingDirectory是空字符串,则当前目录将被理解为包含可执行文件

    • 如果您指定的进程路径是相对的(例如,
      myapp.exe
      ),它将在
      工作目录
      路径中查找进程。但是,如果进程路径是绝对路径(例如,
      C:\Program Files\My App\My App.exe
      ),它将从那里开始,并简单地让新进程的工作目录为您指定的目录
  • 如果
    UseShellExecute
    属性为
    False

    …WorkingDirectory属性不用于查找可执行文件。相反,它的值适用于已启动的流程,并且仅在新流程的上下文中具有意义

  • 进程的工作目录是计算为其当前文件夹的目录。例如,如果在Windows 7中启动命令提示符(cmd),其工作目录通常是您的用户路径(例如
    C:\Users\Vincent
    )。而如果您以管理员身份启动cmd,则工作目录将是
    C:\Windows\System32


    顺便说一句,你的这些支票是毫无用处的:

    If ProcessPath <> "" Then startInfo.WorkingDirectory = ProcessPath
    If ProcessArguments <> "" Then startInfo.Arguments = ProcessArguments
    

    你为什么不自己试试呢?你为什么不自己试试呢?