WindowsシェルAPIとC#を使用して、マップされたドライブのフレンドリ名を変更するにはどうすればよいですか?私の実際の問題は、UNCパスのない分離されたネットワークドライブを扱っていることです。その名前を変更する唯一の方法はエクスプローラからですが、プログラムでそれをやりたいのです。シェルAPIでマップされたドライブの名前を変更
答えて
SetVolumeLabel
APIを使用する必要があります。
基本的に、あなたが参照しているドライブの「名前」はボリュームラベルと呼ばれます。 P/Invoke APIを使用して、そのように変更することができます。
拡張エラー情報を取得するには、GetLastError
を使用します。
System.IO.DriveInfoにはボリュームのラベルを変更できるプロパティVolumeLabelがあります。ボリュームの名前を変更するための要件を確認するには、VolumeLabelの例外と注釈を確認してください。
ネットワークドライブとしてマップしない限り、UNCの名前を完全に変更できないようです。また、UNCへのショートカットを作成して名前を変更することもできます。
私は同様の問題を抱えていたし、次のコード使用してそれを解く:COMを参照して
Shell32.Shell shell = new Shell32.Shell();
((Shell32.Folder2)shell.NameSpace("X:")).Self.Name = "Friendly Label";
を - >マイクロソフトシェルコントロールとオートメーション。 それは基本的に古いVBSコードのC#の表現が、私は違いがしかし、すべてのVBの実装がfolder2 objectを返すように見える一方で、いくつかの理由の名前空間のC#実装がfolder objectを返すことである
Set oShell = CreateObject("Shell.Application")
oShell.NameSpace("X:").Self.Name = "Friendly Label"
を持っていましたさ。 folder2だけが 'Self'プロパティを持っているので、追加キャストが必要です。
また、コメントの1つに指摘されているように、これはSTAのアパートメント内でのみ機能するので、Main()メソッドは[STAThread]で装飾する必要があります。
このような古い質問に答えるのは悪い習慣ではないことを願っていますが、私はどこにでも解決策が見つからないと非常に不満でした。
古い、答えられていない質問に貴重な答えを与えることは、決して悪い習慣ではありません。:) – Henrik
これはSTAのアパートでしか動作しないので、これを使うには 'Main()'メソッドを '[STAThread]'で修飾する必要があります –
これは新しいラベルを設定するのに有効です。残念ながら、ネットワークドライブを元のラベルにリセットすることはできないようです。少なくともnullまたは空の文字列ではありません。 Windowsエクスプローラでは、空の文字列に名前を変更することでリセットできます。どのようにこのコードでこれを行うにはどのようなアイデア? – CodeX
- 1. 複数のファイル名をbashシェルの名前に変更
- 2. APIキーの名前を変更する
- 3. Python Win32 - マップされたドライブのDriveInfo
- 4. デバイスの名前を変更する(ハードコードされたデバイス名)
- 5. マップされたドライブからのバッチの環境変数
- 6. MFC(VC++)でマウントされたドライブ名を変更する方法は?
- 7. GoogleドライブAPIのURLの変更
- 8. 名前が変更されたファイルをPHPでダウンロードする
- 9. ソーステーブルの同じ名前の名前の変更された変数を参照してください
- 10. SSRSリンクされたレポート名の名前を変更した後のエラー
- 11. ロックされたテーブルの名前を変更する
- 12. Mercurialのブランチにコミットされた名前を変更
- 13. joomlaにアップロードされたファイルの名前を変更
- 14. マウントされたディスクイメージの名前を変更
- 15. 承認されたiPhoneアプリの名前を変更する
- 16. PowerShellマップされたドライブまたはUNCドライブ上のコピー(SQL Serverのジョブエージェント)
- 17. Windows XPでマップされたドライブのバックアップを作成する
- 18. ファイルの名前、変更された日付、変更時刻の表示
- 19. Github API ...移動/名前を変更したファイルのソースファイル名を取得する
- 20. iscsiイニシエータ名からiscsiマップされたドライブ文字を取得します。
- 21. C#のインターフェイスで継承されたメソッドの名前を変更しました
- 22. サービス参照プロキシクラスの名前が変更されました
- 23. SVNフォルダの名前が変更されました
- 24. MonoDevelopの名前変更された変数がiOSシミュレータを壊しました
- 25. jazzhubで別名の名前を変更
- 26. C++プログラムにマップされたドライブが表示されない
- 27. 署名されたJavaアプレットの「名前」値を変更します
- 28. Googleマップの名前の識別に変更
- 29. Googleドライブ - 変更点:リストAPI - フォルダレベルでの変更を検出する
- 30. マイscipy.miscモジュールは、名前が変更されたimsave
[C#CD-ROMのドライブ文字をD:からZ:に変更する方法(http://stackoverflow.com/questions/5084297/c-how-to-change-the-drive-letter) cd-from-d-to-z) –
重複していません。これは別の質問です。 OPは、ドライブ文字を変更するのではなく、マップされたドライブの「フレンドリ名」の名前を変更する方法を知りたいと考えています。 –
[ネットワークドライブラベルの名前を変更する方法またはラベルを変更する方法](http://stackoverflow.com/questions/4460390/how-to-rename-or-relabel-a-network-drive-label) – Luke