2016-07-04 74 views
-4

我正在C++上編寫代碼,它將使用「net use * \ server ... etc」映射到最近的可用驅動器,之後我想在其上打開一個文件。如何使用我剛剛在網絡使用中映射的驅動器? (C++)

是否有一個命令可以讓我與這個新驅動器進行交互,而無需知道它事先映射到哪個驅動器上? (通常這將是驅動器Z :,但並非總是如此!)

更清晰的例子:

system("net use * \\server\folder\ p455word /user:server\user /p:no") 

(output: "Server succesfully mapped to drive Z:") 

然後我通常會嘗試打開該文件:

system("Z:\\folder\mydoc.docx") 

我的問題是關於如何要做到這一點:

system("*\\\folder\mydoc.docx") 

隨着*無論計算機選擇映射到的驅動器,或者如果有工作在這附近。謝謝!

+1

如果你不能識別它,那麼你不能使用它,就這麼簡單。但是,這個程序肯定會稍微修改一下,但是必須能夠記住它分配了哪個驅動器號?或者它可以使用無驅動器號的UNC路徑。 –

+1

什麼是downvotes和躊躇滿志的答覆?我查過這個,找不到答案。 「如果你沒有什麼好說的話......」 –

+1

加載需要的更多細節,如;你研究了什麼?你試過什麼了?結果是什麼?你目前的(最小的,完整的例子)代碼是什麼樣的?我可以理解downvotes - 這是一個低質量的問題,需要做更多的工作來展示已經開展的努力來解決問題。 –

回答

0

如果你正在尋找一些net use特定的魔法,你會感到失望。您的程序只是將一個文本字符串傳遞給Windows外殼,並且沒有關於您執行的命令的知識或信息。除了閱讀命令的文本輸出之外,它肯定無法提取有關該調用結果的狀態信息。

幸運的是,文本輸出是所有你需要的—你的報價顯示分配的盤符在那裏。您只需將其拉出,然後通過從現在已知的驅動器號和路徑的固定部分生成一個字符串來動態構建後續的system調用。儘管如此,

system並不是真正爲此設計的。 Here's how to execute a command and retrieve its output。從字符串"Server succesfully mapped to drive Z:"中提取驅動器號也是一個單獨的問題。一般來說,當你遇到問題時,將其分解成組成部分;那麼你就可以「成功查找」。

+0

感謝您的建議!然而,鑑於它的結果非常複雜,我發現了一個解決方法,正如評論中所建議的。如果任何人有同樣的問題,無論驅動器映射到何處,都可以使用UNC路徑「\\ server \ folder」連接到它,而無需提示輸入密碼。 i。E: 淨使用* \\奎\文件夾PASSW0RD /用戶:奎\宙斯/ P:不 然後 可以accesed簡單地爲: 探險\\奎\文件夾 不管如果它是Q上映射:甲:或Z::) –

+0

@ J.Doe:這與C++無關,因此超出了問題的範圍。 –

相關問題