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属性不用于查找可执行文件。相反,它的值适用于已启动的流程,并且仅在新流程的上下文中具有意义
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属性不用于查找可执行文件。相反,它的值适用于已启动的流程,并且仅在新流程的上下文中具有意义
C:\Users\Vincent
)。而如果您以管理员身份启动cmd,则工作目录将是C:\Windows\System32
顺便说一句,你的这些支票是毫无用处的:
If ProcessPath <> "" Then startInfo.WorkingDirectory = ProcessPath
If ProcessArguments <> "" Then startInfo.Arguments = ProcessArguments
你为什么不自己试试呢?你为什么不自己试试呢?