用户可以轻松地将特殊文件夹(如计算机,网络等)重命名为他们喜欢的任何内容。此外,如果计算机使用不同的区域设置,则这些文件夹的名称也将不同。
我想在我的应用中获取所有特殊文件夹的当前名称,如计算机,回收站,网络等。有没有办法做到这一点?一个特定的API?注册表值?
例如,用户将My Computer
重命名为Super Computer
。我的应用应该显示My Computer
的名称为Super Computer
。
答案 0 :(得分:3)
他不是在寻找目录路径,他只是想要“我的电脑”快捷方式的当前名称。
如果您右键单击“我的电脑”并单击“重命名”并将名称设置为“Awesome Computer”,请考虑。你怎么能通过C#找到这个值?
如果我打开regedit并在“Awesome Computer”上执行“查找”,则会返回以下内容:
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&amp; Earch ... 8964回收站 9216我的电脑 9217我的网络位置 9227我的文件 9319打印机和传真
只需在注册表中搜索值@C:\ WINDOWS \ system32 \ SHELL32.dll即可查找所有内容。