2016-07-04 2 views
-4

"net use * \ server ... etc"を使ってもっとも近いドライブにマップするコードをC++で書いています。その後、ファイルを開きたいと思います。net useでマップしたドライブはどうすれば使用できますか? (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: ネット使用* \\ KRATOS \フォルダPASSW0RD /ユーザー:KRATOS \ゼウス/ P:なし その後、単にaccesedすることができます。 エクスプローラ\\ KRATOS \フォルダ かかわらず、それがQにマッピングされた場合: :またはZ::) –

+0

@ J.Doe:これはC++とは関係がないので、質問の対象外です。 –

関連する問題