2014-06-30 52 views
0

麻煩我正在製作一個程序,在一個域上工作。 Visual Basic(Visual Studio 2012)與process.start()

在程序開始時,它提示用戶輸入用戶名和密碼原因是我運行的一些東西需要以Admin身份運行。

我遇到以下問題。

Dim passwordRemote As SecureString = ConvertToSecureString(form1.PCMU.Text) 
    Dim DomainRemote As String = "xxxxxxx" 
    Dim UserNameRemote As String = "xxxxxx" 
    Dim FileNameRemote As String = "cmrcviewer.exe" 
    Dim directoryRemote As String = "c:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386" 

    process.StartInfo.WorkingDirectory = directoryRemote 
    process.StartInfo.FileName = FileNameRemote 
    process.StartInfo.Domain = DomainRemote 
    process.StartInfo.UserName = UserNameRemote 
    process.StartInfo.Password = passwordRemote 
    process.StartInfo.UseShellExecute = False 

    process.Start() 

問題是我得到的是:

該系統找不到指定的文件

我已經把cmd.exe的到該目錄中,並且工作正常。 「cmrcviewer.exe」,它坐落在同一個目錄不工作..

「cmrcviewer.exe」是sccm2012

請幫助這將是有關的部分文件不勝感激

+0

,你嘗試運行。 NET應用程序通過網絡?由於安全策略,這可能會變得非常棘手(默認情況下,.NET程序集對網絡非常有限 - 您甚至不會獲得文件I/O)。 – Luaan

回答

0

WorkingDirectory.exe所在的路徑,它將作爲應用程序啓動時的「當前」目錄使用的路徑。默認情況下,它與.exe所在的文件夾位於同一文件夾。

例如,當您向項目文件夾打開控制檯窗口並執行如msbuild這樣的命令時,工作目錄就是您的項目文件夾,而可執行文件的路徑始終位於.NET SDK中。

您的代碼只使用相對路徑名稱作爲可執行文件,這意味着Windows將嘗試在您的應用程序的工作目錄中找到它。如果在那裏找不到它,它將在用戶的路徑環境變量中查找它。

爲了讓您的代碼工作,你需要寫:

process.StartInfo.FileName = Path.Combine(directoryRemote,FileNameRemote) 

或只是基於變量名傳遞整個路徑作爲一個字符串FileName