有没有办法在 Cocoa 中更改用户桌面目录路径值?

Posted

技术标签:

【中文标题】有没有办法在 Cocoa 中更改用户桌面目录路径值?【英文标题】:Is there a way to change user desktop directory path value in Cocoa? 【发布时间】:2011-06-25 15:59:28 【问题描述】:

我知道有 NSDesktopDirectory 可以让我找到当前用户桌面目录的路径,但是这个路径值写在哪里,有没有办法从我的可可应用程序中更改它,我找不到。

谁能指出我正确的方向?

附加说明: 在 Snow Leopard 中,当我将 Desktop 文件夹重命名为任何内容时,该文件夹的内容仍会显示在桌面上,因此我猜操作系统会跟踪该文件夹名称和位置的更改并保持它作为桌面文件夹。有谁知道它是怎么做到的?

【问题讨论】:

所以,本质上,您正在寻找一种移动用户主目录的方法,对吧? 否 :),我正在寻找一种方法来更改用户桌面上显示的内容。 请阅读您的说明。猜猜你毕竟不想更改主文件夹;)如果你想更改用于桌面的文件夹,一种可行的方法是删除原始的 ~/Desktop 文件夹(在命令行上以 root 身份,因为 10.6 防止用户弄乱这些文件夹,最好是在未登录的情况下),然后将不同的文件夹符号链接到 ~/Desktop。不过,我没有对此进行测试。 @tmilovan 任何能够以某种方式设法执行您所描述的事情的应用程序在第一次执行时都会在我的垃圾箱中。桌面属于用户。我强烈建议您重新考虑您的设计。 当然可以。这就是为什么我正在尝试做桌面管理应用程序,它允许用户根据他们正在处理的项目更改桌面文件夹。在 linux 上只用 bash fu 就可以做到这一点,但这在 SL 上不起作用,因为 SL 以某种方式跟踪原始桌面文件夹并始终显示其内容。但是,我的问题是有可能吗,我不应该这样做:))? 【参考方案1】:

您可以这样做的一种方法是将用户桌面上的整套文件(包括具有位置/空间信息的 .DS_Store)存储到 ~/Library/Application Support/ 文件夹中的文件夹中,然后移动其他文件在〜/桌面上?这应该有效地“替换”用户的桌面。

[按照上面的建议作为答案发布]

【讨论】:

这正是我最终选择的。到目前为止一切顺利:)。【参考方案2】:

出于好奇,我花了大约 40 分钟来研究这个问题。谷歌在这种特殊情况下没有帮助,所以我浏览了我的 ~/Library 文件夹。路径没有存储在那里的任何地方。然后,我使用命令行 fu 进行挖掘以检查标志和我能找到的任何其他元数据。没什么用。

我认为这是一个内置的东西,它使用文件系统引用而不是硬编码的文件路径(这就是它的“桌面”名称在重命名后仍然存在的原因)。如果你删除它,它会创建一个新的并将引用存储到那个。你将无法交换它。

我认为 Phil 的评论可能是您最好的选择:移动文件夹的内容而不是文件夹本身。这是我的看法:

~/Desktop/.myDesktop1 ... ~/Desktop/.myDesktop2 ... ~/Desktop/.myDesktop3

甚至可能:~/Desktop/.myappdesktops/1 ~/Desktop/.myappdesktops/2 ~/Desktop/.myappdesktops/3

如果您将内容移动到点文件夹中,它会保持隐藏状态,但会保留在那里。活动的东西像往常一样保留在 ~/Desktop 中,但您的每个概念“桌面”都存储在一个点文件中,因此它保持隐藏状态。

警告:时间机器。 :-) 无论您采用何种方法,换出“组”文件都可能对任何备份解决方案造成严重破坏。

【讨论】:

也就是说,OP,我有兴趣试用您的应用程序。这听起来像是一个有趣的想法。在 Twitter (@jnozzi) 或我的个人网站上联系我(查看我的个人资料)。 :-) 一旦我的应用程序开发成令人满意的形状,我会与您联系 :))。而且我认为我对 Time Machine 和移动问题有一个优雅的解决方案。不过会看到:)) 请注意任何有兴趣的人:该应用程序现已提交到 Mac App Store 进行审核,很快将提供单独的演示。【参考方案3】:

所以,回答我自己的问题:无法更改 Snow Leopard 或 Lion 中的桌面路径(尽管您已阅读过它)。切换桌面的唯一方法是移动内容本身,这可以在一定程度上使用一组 AppleScript 来完成 :(.

另一种方式是这里的应用程序:)):

http://itunes.apple.com/us/app/projectdesktops/id499870251?ls=1&mt=12

【讨论】:

以上是关于有没有办法在 Cocoa 中更改用户桌面目录路径值?的主要内容,如果未能解决你的问题,请参考以下文章

跨平台桌面目录路径?

如何允许用户将文件拖出 Cocoa 应用程序

Cocoa - 强制退出所有其他应用程序

在 Cocoa/Cocoa Touch 中监控目录

Qt5.1.0怎么获取桌面路径

更改OUTLOOK文件存储路径后如何查看原来的邮件