- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Xcode 创建了一个命令行工具应用程序。在那个应用程序中,我使用 NSWorkspace 来启动另一个应用程序包 (.app),如此处建议的那样。 MacOsX: How to launch an application (.app) from a "Command Line Tool" type of app
在我尝试使用 launchctl 将命令行工具应用程序作为守护进程启动之前,一切似乎都运行良好。如果守护进程以当前登录用户身份运行,则命令行工具应用程序可以正常启动外部应用程序。如果守护程序以根用户身份运行,则命令行工具应用程序无法启动外部应用程序。如果守护程序以 root 身份运行,则使用 NSWorkspace 打开应用程序似乎不起作用。
有谁知道从以 root 身份运行的守护进程打开另一个应用程序的正确方法?
最佳答案
这可能是您遇到的 MacOS 中的安全限制。
我建议做的是创建一个代码签名的“帮助工具”,它将自身重置为当前登录用户的用户 ID(通过 setuid —— 我不会在代码签名的应用程序之外这样做),然后执行 NSWorkspace 技巧以在该用户上下文中启动应用程序。
不过,创建辅助工具并非易事。宏伟的概念在 Apple 的 Authorization Services Programming Guide 中有所描述。 .
看看Apple's "SMJobBless" sample code ,它展示了如何安装您可以设置用户权限的帮助工具,然后修改它的帮助工具代码以启动您的应用。
关于macos - 苹果操作系统 X : Launching an app using NSWorkspace from a daemon doesn't work if the daemon is run as root,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15514259/
我想在浏览器中打开一个 url,但出现此错误: Use of unresolved identifier NSWorkspace 我的代码: if let url = URL(string: "htt
我尝试了下面的代码,它对我来说工作得很好。我也能够启动邮件应用程序。 //Note the below path is coming from bundle identifier of Mail AP
我在 Google 上未能找到此问题的答案。我正在 Cocoa 中构建一个命令行实用程序,当我尝试创建 NSWorkspace 的实例时我收到编译器错误。这是我在 main.m 中实现的代码,这非常简
我有一个 Cocoa 应用程序和一个启动代理。启动代理使用以下方式启动应用程序launchAppWithBundleIdentifier:方法调用。 在我的应用程序中,我想检查应用程序是由用户启动的(
我想获取 MacO 中所有正在运行的进程的列表。 当我使用时 [myWorkspace runningApplications]; 我仅获取当前用户应用程序的列表。 如何找出所有进程的列表,包括 ro
我在文件夹上使用 NSWorkSpace setIcon:forFile:options:。 但是,虽然每次使用 API 时 API 都会返回 success(true),但有时文件夹上的图标不会更新
从 cocoa 应用程序中,我需要将文件移至垃圾箱,使用 NSWorkspaceRecycleOperation 这非常简单,但垃圾箱中的文件无法恢复到其原始位置。 恢复似乎只能通过 Finder 进
当我切换应用程序时我的功能没有被执行: public class ItemObserver: NSObject { @objc public func recievedNotification(n
目前,我有这个。 var workspace = NSWorkspace.shared() do { try workspace.setDesktopImageURL(destinati
我正在尝试使用 open 启动应用程序通过 Swift 工具。我有两个单独的实现,一个是 NSWorkspace.shared.openApplication(at:configuration)适用于
我是一名经验丰富的 C/C++ 程序员,但对 ObjC++ 不熟悉。我正在尝试在 Mac OSX 项目中捕获 NSWorkspacedidmountnofification。 我将回调添加到我的应用委
我的应用程序能够提取 .deb 文件,但前提是您通过应用程序中的按钮指定了位置。但我希望能够只需单击 .deb 文件并打开我的应用程序,运行我已有的操作,然后在完成后退出。现在我正在使用 NSWors
我有以下代码来启动地址簿,现在效果很好,但是有没有办法可以在正在运行的应用程序之前启动它? [[NSWorkspace sharedWorkspace] openFile:@"/Application
我的要求是打开一个 pdf/ppt 等文件并在 20 分钟后关闭它。感谢 NSWorkspace,我能够正确打开这些文件。但我怎样才能关闭这些文件呢? NSWorkspace 似乎没有 close 方
我使用这一行在浏览器中打开一个网址。 [[NSWorkspace sharedWorkspace] openURL: [NSURL URLWithString:url]]; 我想减小 NSWorksp
我不确定我是否在这里做错了什么: 我正在 awakeFromNib 中使用此代码段注册工作区通知 [[[NSWorkspace sharedWorkspace] notificationCenter]
在launchedApplications函数的NSWorkspace文档中,它说:“强烈建议您使用 NSWorkspace runningApplications 方法和 NSRunningAppl
我的要求是打开一个 pdf/ppt 等文件并在 20 分钟后关闭它。感谢 NSWorkspace,我能够正确打开这些文件。但我怎样才能关闭这些文件呢? NSWorkspace 似乎没有 close 方
终端的以下工作: open -a cyberduck ftp://anonymous@mirror.switch.ch/mirror 并打开 FTP 站点,表明它正在处理其参数。 但是下面的代码却没有
我正在尝试进行窗口管理,但我需要在单独的线程上运行代码。 我需要做的第一件事是订阅应用程序通知,如下所示: NSNotificationCenter *nc = [[NSWorkspace share
我是一名优秀的程序员,十分优秀!