代码之家  ›  专栏  ›  技术社区  ›  Nidhoegger

从LaunchDaemon以特定用户身份启动应用程序

  •  1
  • Nidhoegger  · 技术社区  · 8 年前

    我目前正在尝试在中启动一个应用程序 /Applications

    2 回复  |  直到 8 年前
        1
  •  0
  •   TheDarkKnight    8 年前

    在LaunchDaemon的plist中,您可以设置 UserName

    <key>UserName</key>
    <string>userForThisProcess</string>
    

    哪里 userForThisProcess 是要用于运行应用程序的用户。

        2
  •  0
  •   Nidhoegger    8 年前

    我现在以一种有点奇怪的方式解决了这个问题。我使用 NSTask 结合 sudo open . 也许将来有人需要这个:

    + (bool)start_app_bundle_as_user:(NSString *)path with_user_name:(NSString *)user_name
    {
        NSString *cmd = [NSString stringWithFormat:@"/usr/bin/sudo -i -u %@ -- open -a %@", user_name, path];
        NSTask *task = [[NSTask alloc] init];
        NSArray *args = [NSArray arrayWithObjects:@"-c", cmd, nil];
        [task setLaunchPath:@"/bin/sh"];
        [task setArguments:args];
        [task launch];
        [task waitUntilExit];
        return [task terminationStatus] == 0;
    }