我是否正确使用了`Process`类

时间:2016-11-03 05:29:03

标签: vb.net

我有一些代码:

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

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

1 个答案:

答案 0 :(得分:2)

  

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

这取决于。根据这两个MSDN文档条目,有三种方案:ProcessStartInfo.WorkingDirectory propertyShellExecute function

  1. 如果True属性为myapp.exe(默认)

      

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

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

      

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

  3. 进程的工作目录是计为其当前文件夹的目录。例如,如果在Windows 7中启动命令提示符(cmd),则其工作目录通常是您的用户路径(例如C:\Windows\System32)。而如果您以管理员身份启动cmd,则工作目录将为If ProcessPath <> "" Then startInfo.WorkingDirectory = ProcessPath If ProcessArguments <> "" Then startInfo.Arguments = ProcessArguments

    作为旁注,你拥有的这些检查非常无用:

    startInfo

    如果您的变量 为空,那么Nothing的属性将只是If,这与空无任何区别这种情况下的字符串。因此,删除startInfo.WorkingDirectory = ProcessPath startInfo.Arguments = ProcessArguments - 语句很好:

    import mysql.connector
    
    password = input("Enter Password Here")
    print(password)
    
    conn2 = mysql.connector.connect(host="localhost", user="root", password="root", database="trial")
    c2 = conn2.cursor()
    c2.execute("select lastname from table1 where lastname= '?' ", (password))
    row1 = c2.fetchone()
    
    print(row1)
    
    if(c2==password):
       print("Welcome User")
    else:
       print("Invalid")