- - PR -
C#でWindows XPでのドライブレターの変更を行うには?
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-04-30 02:52
お世話になります。
掲題のとおりですが、C#を使ってCDROMドライブのドライブレターを(自動的に)変更する方法を探しています。 Eドライブ(CDROM0)をTドライブ(CDROM0)とかに変更する もともとWSH + WMI + JScriptで探していたのですが、どうやら不可能の様なので、C#なら(もといC++でもいいのですが・・。)出来るのではないかと思い探して見たものの中々見つからず、投稿させて頂いてます。。 どの様なアドバイス/ご指摘でも結構ですので、よろしくお願い致します。 | ||||||||
|
投稿日時: 2006-04-30 10:04
SetVolumeMountPoint APIを使います。
.NET Frameworkに同様の機能が用意されているか確認していません。WMI経由での取得はともかく、変更するにはAPIを呼ぶ以外に無い予感がします。 | ||||||||
|
投稿日時: 2006-04-30 23:20
ご回答ありがとうございます。
早速見せて頂きました。 ちょっと今の私では敷居が高そうなので、もうちょっと勉強してから試して見ます。 ちなみに、頂いた情報以外には出来そうにもないみたいですね^^; おって結果ご連絡致します。 ・・・いつになるか分かりませんが。。 | ||||||||
|
投稿日時: 2006-04-30 23:52
GetVolumeNameForVolumeMountPoint で GUID を取得して、 SetVolumeMountPoint で再マウント (移動) するだけだと思います。 取り急ぎ API の定義だけ。
多分こんな感じです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-05-05 18:13
返答が大変遅くなりました。
頂いた情報を基に、(知識が乏しい状態で)下記の様なコードを作成してみました。 文法等も大してよく判ってはいないのですが、コンパイルまでは出来ました。 しかし、いざ実行してみると"C:\Windows\Microsoft.Net\framework\v2.0.50727\mscorwks.dll could not be loaded"と表示されます。(Windows XP) また、Windows 2003では"問題が発生したためプログラムを終了します"と表示されます。 おそらく判る方が見ると一目瞭然か、問題が多数あるとは思うのですが、アドバイス頂けないでしょうか? よろしくお願いします。 とりあえず、QドライブをDドライブへ変更する様に指定したつもりです。 ------------------------------------------------------------------- using System; using System.Runtime.InteropServices; class changeDriveLetter{ [DllImport("KERNEL32.DLL", CharSet=CharSet.Auto)] private static extern bool SetVolumeMountPoint( string volumeMountPoint, string volumeName ); [DllImport("KERNEL32.DLL", CharSet=CharSet.Auto)] private static extern bool GetVolumeNameForVolumeMountPoint( string volumeMountPoint, out System.Text.StringBuilder volumeName, uint bufferLength ); public static void Main(){ uint length = 0x50; System.Text.StringBuilder volumeName = new System.Text.StringBuilder((int)length); GetVolumeNameForVolumeMountPoint(@"Q:\",out volumeName,length); string GUID = volumeName.ToString(); SetVolumeMountPoint(@"D:\",GUID); } } | ||||||||
|
投稿日時: 2006-05-05 18:16
コードが見づらいため、再投稿します。
| ||||||||
|
投稿日時: 2006-05-05 18:32
とりあえず、ここでの volumeName の中身は確認していますか? ステップ単位で結果を提示してください。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-05-05 19:03
お世話になります。
Mainメソッドの部分を下記の様に変更してみたのですが、 結果は変わりませんでした。 エラーが表示されるだけでした。。
内容を確認するのに、他に適切な方法はあるのでしょうか? 重ね重ね大変申し訳ありません。 |