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

Objective c 有没有办法在Cocoa中更改用户桌面目录路径值?,objective-c,cocoa,macos,Objective C,Cocoa,Macos,我知道有NSDesktopDirectory可以为我获取到当前用户桌面目录的路径,但是这个路径值写在哪里?有没有办法从我的cocoa应用程序中更改它?我找不到 谁能给我指出正确的方向吗 其他说明:在雪豹中,当我将桌面文件夹重命名为任何名称时,该文件夹的内容仍显示在桌面上,因此我猜操作系统会跟踪该文件夹名称和位置的更改,并将其保留为桌面文件夹。有人知道它是怎么做到的吗?出于好奇,我花了大约40分钟研究这个问题。谷歌在这个特殊的场景中毫无帮助,所以我在我的~/Library文件夹里翻了翻。路径没有存

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

谁能给我指出正确的方向吗


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

出于好奇,我花了大约40分钟研究这个问题。谷歌在这个特殊的场景中毫无帮助,所以我在我的~/Library文件夹里翻了翻。路径没有存储在那里的任何位置。然后,我用命令行fu四处搜索,检查标志和我能找到的任何其他元数据。没什么帮助

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

我认为Phil的评论可能是你最好的选择:移动文件夹的内容,而不是文件夹本身。以下是我对它的看法:

~/Desktop/.myDesktop1~/桌面/.myDesktop2~/桌面/.myDesktop3

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

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


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

出于好奇,我花了大约40分钟研究这个问题。谷歌在这个特殊的场景中毫无帮助,所以我在我的~/Library文件夹里翻了翻。路径没有存储在那里的任何位置。然后,我用命令行fu四处搜索,检查标志和我能找到的任何其他元数据。没什么帮助

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

我认为Phil的评论可能是你最好的选择:移动文件夹的内容,而不是文件夹本身。以下是我对它的看法:

~/Desktop/.myDesktop1~/桌面/.myDesktop2~/桌面/.myDesktop3

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

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


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

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


[如上所述作为答案发布]

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


[作为上述建议的答案发布]

因此,回答我自己的问题:在雪豹或狮子中,没有办法更改桌面路径(尽管您已经阅读过)。切换dasktop的唯一方法是移动内容本身,这在某种程度上可以通过一组AppleScripts来完成:(

另一种方法是在此处使用此应用程序:):


所以,来回答我自己的问题:在雪豹或狮子中,没有办法更改桌面路径(尽管你读过它)。切换dasktop的唯一方法是移动内容本身,这在某种程度上可以通过一组AppleScripts来完成:(

另一种方法是在此处使用此应用程序:):


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