objective-c - 如何在沙盒应用程序中获取用户主目录?

标签 objective-c macos cocoa appstore-sandbox

NSHomeDirectory() 正在重新调整我的沙盒根目录,而不是我的主目录。 [@"~"stringByExpandingTildeInPath] 正在做同样的事情。

这个 /Users/username/Library/Containers/appID/Data 是返回的内容。如何获取 /Users/username/

最佳答案

如果你想要用户真实主目录的路径,你可以使用:

char *realHome = getpwuid(getuid())->pw_dir;

完整示例:

#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
#include <assert.h>

NSString *RealHomeDirectory() {
    struct passwd *pw = getpwuid(getuid());
    assert(pw);
    return [NSString stringWithUTF8String:pw->pw_dir];
}

这会为您提供用户主页的路径,但不会自动为您提供对该文件夹的访问权限。如评论中所述,您可以将此路径用于:

  • 为打开/保存对话框提供一个合理的默认文件夹
  • 通过将结果与 NSHomeDirectory()
  • 进行比较,检测您是否处于沙箱中

关于objective-c - 如何在沙盒应用程序中获取用户主目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9553390/

相关文章:

objective-c - 如何使用 GCC 编译 Objective-C 代码?

objective-c - 将 char 传递给 c 中的函数(这本书错了吗?)

python - pyside-uic/pyuic4 : command not found

java - Mac 上未设置 X11 DISPLAY 变量

macos - setAspectRatio 在调整窗口大小之前不起作用

cocoa - iPhone/Mac - C++ 向量或 NSMutableArray

ios - 从 tableview 的每个单元格中执行值的添加

objective-c - 创建常量字典对象

ios - CGFloat 到 $ST4 Swift 构建错误

cocoa - 确定 HTML 源中给定 WebKit 选择中的 DOMRange 的字符索引