2012-01-11 87 views
0

用户可以轻松地将特殊文件夹(如计算机,网络等)重命名为任何他们喜欢的文件夹。此外,如果计算机使用不同的区域设置,则这些文件夹的名称也会不同。获取Windows特殊文件夹的当前名称

我想在我的应用程序中获取所有特殊文件夹的当前名称,如计算机,回收站,网络等。有没有办法做到这一点?一个特定的API?一个注册表值?

例如,用户将重命名为Super Computer。我的应用应该显示的名字是Super Computer

+2

有什么不同于[this](http://stackoverflow.com/questions/8810606/identify-all-open-system-special-folders/8810658#8810658)的问题?对我来说,有一个解释如何从系统中获取特殊文件夹。 – Tigran 2012-01-11 20:52:59

+1

您指定的文件夹不是* real * IO实体,它们不是文件夹,因此它们没有路径。 – Tigran 2012-01-11 20:58:11

+0

其中一些不是实际的文件夹(如网络,计算机)。你想要什么而不是驱动器和目录名返回? – 2012-01-11 21:01:44

回答

3

他不在寻找目录路径,他只是想要“我的电脑”快捷方式的当前名称。

请考虑如果您右键单击我的电脑,然后单击重命名并将名称设置为“Awesome Computer”。你怎么能通过C#找到这个值?

如果我打开注册表编辑器,并做了“查找”的“真棒电脑”将返回以下:

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

您可以检索使用Registry.GetValue方法在C#中这个值。您可以使用将它们设置为唯一名称并运行注册表搜索的相同方法找到网络,回收站等的注册表路径。

更新

看来,如果用户还没有更名为我的电脑,它仍然设置为默认值,然后将注册表值将为空。在这种情况下,你可以看看下面的注册表值来查找默认名称:

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

这里是不同的默认值的列表:

8503小号& ......操作搜索8964 回收站 9216我的电脑 9217网上邻居 9227我的文档 9319打印机和传真

只要搜索值@C:\ WINDOWS \ SYSTEM32 \ shell32.dll中在注册表中找到他们。

+0

我有我的疑惑..你可能需要自己处理每一个。但是,你现在知道在哪里寻找它们。 – jzacharuk 2012-01-11 21:56:27