2012-01-11 13 views
0

コンピュータ、ネットワークなどの特別なフォルダの名前を簡単に変更できます。また、コンピュータが別のロケールを使用している場合、それらのフォルダの名前も異なります。Windowsスペシャルフォルダの現在の名前を取得

私のアプリでは、コンピュータ、ごみ箱、ネットワークなどのすべての特別なフォルダの現在の名前を取得したいと思います。これを行う方法はありますか?特定のAPIですか?レジストリ値?

たとえば、ユーザ名をからSuper Computerに変更します。私のアプリはの名前がSuper Computerであることを示すべきです。

+2

[this](http://stackoverflow.com/questions/8810606/identify-all-open-system-special-folders/8810658#8810658)とは何が違うのですか?システムから特別なフォルダを取得する方法については私には分かります。 – Tigran

+1

指定したフォルダは*実際の* IOエンティティではなく、フォルダではないため、パスはありません。 – Tigran

+0

一部は実際のフォルダではありません(Network、Computerなど)。ドライブとディレクトリ名の代わりに何を返すのですか? –

答えて

3

彼はディレクトリパスを探していないので、マイコンピュータショートカットの現在の名前が必要です。

[マイコンピュータ]を右クリックして[名前を変更]をクリックし、名前を「すばらしいコンピュータ」に設定することを検討してください。この値をC#でどのように見つけることができますか?私はRegeditを開き、次が返され、「恐ろしいコンピュータ」に「検索」ない場合

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D} 

あなたはRegistry.GetValueメソッドを使用してC#でこの値を取得することができます。ネットワーク、ごみ箱などのレジストリパスは、一意の名前に設定してレジストリ検索を実行する同じ方法を使用して見つけることができます。

更新

ユーザーがマイコンピュータの名前を変更していない、それはまだデフォルトに設定されている場合、レジストリ値はnullになりますことが表示されます。この場合、デフォルトの名前を検索するには、次のレジストリ値を見ることができます:ここで

HKEY_USERS\S-1-5-21-1070759151-1144338347-1905203885-52919\Software\Microsoft\Windows\ShellNoRoam\MUICache 
@C:\WINDOWS\system32\SHELL32.dll,-9216 

は異なるデフォルトのリストです:

8503 S & earchが... 8964ごみ箱 9216マイコンピュータ 9217マイネットワーク 9227マイドキュメント 9319プリンタとFAX

ちょうど値@Cを検索:\ WINDOWS \ SYSTEM32 \ shell32.dllのレジストリにそれらすべてを見つけます。

+0

私は自分の疑問を持っています。おそらくそれぞれを単独で処理する必要があります。しかし、あなたは今どこでそれらを見つけるために知っている。 – jzacharuk

関連する問題