在Windows资源管理器中打开Windows 7图书馆

4

如何在我的应用程序中打开类似于文档图片音乐视频和所有其他自定义库的Windows 7库?

Libraries

我尝试打开explorer.exe Libraries\Documents但是它不起作用。


1
请参阅http://www.codeproject.com/Articles/65535/Windows-7-Libraries-C-Quick-Reference。 - ken2k
6个回答

5

查找AppData目录:

Dim appData As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

找到文件快捷方式并在资源管理器中打开:

For Each file As String In Directory.GetFiles(appData, "Documents.library-ms", SearchOption.AllDirectories)
    Process.Start(file)
Next

2
这看起来也依赖于实现细节。肯定有一个API可以解决这个问题。 - David Heffernan
@David,有一个适当的API,Obalix在他的回答中已经链接了它。 - MarkJ

4
请看此链接,了解在Windows 7库中执行最常见操作的方法。 编辑: 示例使用Microsoft .Net Framework的Windows API Code Pack [ 编辑于2015年09月24日:之前的链接已失效,请使用此SO条目查找所需的Nuget包 ] (感谢MarkJ指出链接应该在那里)。
至于David Heffernan的问题...
您可以将ShellLibrary对象分配给Microsoft.WindowsAPICodePack.Dialogs.CommonFileDialog(例如Microsoft.WindowsAPICodePack.Dialogs.CommonOpenFileDialog)的DefaultDirectoryShellContainer属性。

使用适当的API,而不是依赖于实现细节,这是一个专业的编程建议。 - MarkJ
1
这个问题在于,对我来说至少不太明显,你怎样在这个文件夹中打开资源管理器。 - David Heffernan
@Obalix程序员想要在特定的库中打开一个explorer.exe窗口,而不是文件对话框。 - David Heffernan
@DavidHeffernan:在命令行上执行“%appdata%\Microsoft\Windows\Libraries\Documents.library-ms”以打开文档库。 - AxelEckenberger
“Windows API Code Pack for Microsoft .Net Framework”的链接已经失效。这里有另一个关于此问题的SO帖子:https://dev59.com/TGAf5IYBdhLWcg3w_G2r - Chris

1

库存储在 C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\Libraries 并具有扩展名为 .library-ms,因此 Documents 将是 Documents.library-ms


4
哦,硬编码路径和依赖于实现细节。 - David Heffernan
我只是告诉他们为什么它不能工作,这不一定是编程的正确方式,他们试图打开Libraries\Documents,而应该是Libraries\Documents.library-ms。 - Iain Simpson

1

Windows API Code Pack 提供了与 Windows 7 库进行交互的托管 API。我认为它可能会有所帮助。


虽然看起来仍然有些棘手,但是这里提供了代码示例(http://blogs.msdn.com/b/msaleh/archive/2009/08/26/windows-shell-programming-with-windows-api-code-pack.aspx),其中包括一个迭代库的示例。 - MarkJ
刚刚注意到Obalix的答案也链接到了这个API代码包的使用。他在这里提供了链接:http://www.codeproject.com/Articles/65535/Windows-7-Libraries-C-Quick-Reference - MarkJ

0

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

将MyDocuments替换为您需要的任何文件夹,在枚举中查看有哪些文件夹。


鉴于用户可以创建自己的文件夹,您将如何打开它(它不会在特殊文件夹枚举中)? - George Duckett
此外,在域连接的计算机上,这会出现问题。 - Barton
我的电脑在域上运行,没有问题。问题可能不止于此。 - Chris

0

这与LostInLib的帖子下的评论有关,因为解释太长无法作为评论。

您需要理解库和文档文件夹之间的区别,因为它们不是同一件事。 C:\ Users \ USERNAME \ Documents是默认文档文件夹C:\ Users \ USERNAME \ AppData \ Roaming \ Microsoft \ Windows \ Libraries \ Documents.library-ms是名为Documents的库,该库是您添加到其中的所有位置的索引,它不必链接到C:\ Users \ USERNAME \ Documents ,例如在我的网络上,我将其设置为\ server \ users \ USERNAME,因此当用户转到开始菜单上的文档库时,他们将重定向到服务器共享。 您还可以在一个库中拥有多个位置,因此我可以在那里将我的docs LOCAL和我的服务器my docs放在一起,因此当我进入my docs库时,它会显示两个文件夹,看起来像是在同一个my docs文件夹中。

假设我的文档在这里不好,因为它不一定是 C:\Users\USERNAME\Documents,同样的,库也不一定在这里 C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\Libraries\Documents.library-ms 如果你重定向了你的 appdata 文件夹,例如在网络上,你的库也可以在这里: \server\users\USERNAME\AppData\Roaming\Microsoft\Windows\Libraries\Documents.library-ms


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接