2013-11-21 109 views
0

我有一個應用程序,它首先映射網絡驅動器使用credentials由用戶輸入。驅動器成功映射,但是當它試圖從Process.Start()運行程序時。我得到的目錄名稱無效。目錄名稱無效,映射的驅動器和用戶名

從我的研究中,我已閱讀並將username/password的工作目錄放入StartInfo。但是這不起作用。工作目錄是映射的驅動器。在開始之前,我做了一個如果(File.exists(w:\folder\filename) ..Process.start ....

我試圖將工作目錄硬編碼爲C:\,但它仍然失敗,因爲它聲明無法找到該文件。

因此,當作爲另一個用戶運行Process.Start時,即使該路徑由同一個帳戶映射,您也無法使用網絡路徑?我是否被迫在本地下載應用程序,以便Process.Start可以正常工作?

任何幫助將不勝感激。

+0

你的問題是什麼。我無法清楚地瞭解 – Sathish

+0

您能否添加一些代碼以顯示您嘗試啓動此過程的方式?你有沒有看過這個:http://stackoverflow.com/questions/9189170/process-start-an-exe-file-on-an-network-share-as-another-user ...可能是你是什麼尋找。 – CodexNZ

回答

0

你是對的,網絡共享是每個用戶令牌。以另一個用戶(或處於提升狀態的同一用戶)運行進程會導致創建新的用戶令牌,因此,從新進程的角度來看,所有活動共享都是「未映射的」。

您有幾個選項。我會嘗試使用的第一件事是使用完整的UNC路徑,而不是映射的網絡驅動器號。它可能只是如果你嘗試的話(你正在運行的新用戶將需要權限來連接到共享)

如果您被迫使用驅動器號而不是UNC路徑,然後編寫一個小型裝載程序您在新用戶令牌的上下文中作爲新用戶have that map the network drive啓動,然後啓動依賴於該驅動器的程序。


P.S.)使用C:\因爲C:\是隻有管理員可以將文件寫入到文件夾的保護並沒有因爲工作直接很成功。如果你創建了一個子文件夾C:\MyTestFolder\並設置適當的權限,我敢打賭,它會工作。

+0

謝謝!我能夠恢復使用UNC。我有另一個應用程序做了同樣的事情,在那裏我使用的是UNC而不是映射驅動器。感謝解釋和確認。 – user3015916