2012-12-19 259 views
2

我創建了一個需要使用CMD進程執行EXE文件的Windows服務。我已經使用了代碼:在Windows服務上運行CMD命令

Str = "C:\PCounter\Staff\account.exe CHARGE " & Name & " " & Amount & " TO" & Id 
    Dim procStartInfo As New System.Diagnostics.ProcessStartInfo(Str) 
    procStartInfo.RedirectStandardOutput = True 
    procStartInfo.UseShellExecute = False 
    procStartInfo.CreateNoWindow = True 
    Dim proc As New System.Diagnostics.Process 
    proc.StartInfo = procStartInfo 
    proc.Start() 
    proc.Dispose() 

但是,上面的代碼將返回「系統找不到指定的文件」。

我已經嘗試過相同的代碼在寡婦窗體上工作正常,也爲了確保路徑正確我已經在EXE文件的相同位置添加了一個文本文件並加載了服務中的文本文件的內容,它工作正常。

我想不出其他什麼,我真的很感激,如果你能幫助我。 謝謝,

+0

請告訴我扔的錯誤,'proc.Start ()',或者是來自account.exe的錯誤信息,表明它找不到文件? account.exe是否需要任何dll?我唯一的想法是,也許這個過程是從錯誤的工作文件夾開始的。 http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.workingdirectory.aspx – Kratz

+0

我會指出,你不是在該代碼的任何地方調用CMD.EXE。 CMD是命令解釋器應用程序。也許你的意思是'控制檯'而不​​是? –

回答

3

ProcessStartInfo有兩個屬性。一個用於運行可執行文件,另一個用於傳遞給可執行文件的參數。 Arguments屬性的語義與命令行完全相同。

您不能將參數包含在與可執行文件相同的屬性中。他們必須分開。

0

創建服務:

SC創建VM-Symantec04 binPath = 「\」 C:\ App32 \的VMware \ VMware工作站\ vmrun.exe \ 「-T WS啓動\」 d:\ VM \ Sym04 \ Sym04的.vmx \ 「NOGUI」 取決於= 「VMAuthdService/VMnetDHCP/VMUSBArbService/VMware的NAT服務」 開始=自動

刪除服務:

SC刪除VM-Symantec04