Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在osx'中添加路由;以编程方式创建路由表_Objective C_Macos_Cocoa_Root - Fatal编程技术网

Objective c 在osx'中添加路由;以编程方式创建路由表

Objective c 在osx'中添加路由;以编程方式创建路由表,objective-c,macos,cocoa,root,Objective C,Macos,Cocoa,Root,在我的应用程序中,我想在OSX的路由表中添加一条特定的路由,我可以像这样通过终端轻松添加 /sbin/route add -host X.X.X.X -interface en1 。为此,我在谷歌上做了一些搜索,了解到有一个文件/etc/ppp/ipup,每当ppp链接打开时,操作系统都会查阅该文件,所以我设置了目标,以编程方式修改该文件 但是操作系统不允许我没有根用户访问权限,所以现在我必须使这个命令能够以编程方式运行,现在我在谷歌上发现“我必须用我的应用程序运行一个助手工具,因为它可以

在我的应用程序中,我想在OSX的路由表中添加一条特定的路由,我可以像这样通过终端轻松添加

 /sbin/route add -host X.X.X.X -interface en1 
。为此,我在谷歌上做了一些搜索,了解到有一个文件/etc/ppp/ipup,每当ppp链接打开时,操作系统都会查阅该文件,所以我设置了目标,以编程方式修改该文件 但是操作系统不允许我没有根用户访问权限,所以现在我必须使这个命令能够以编程方式运行,现在我在谷歌上发现“我必须用我的应用程序运行一个助手工具,因为它可以以根用户的身份运行”,并获取smjobblesapi并运行它的示例。这是成功的

但现在我有一个问题,我如何通过这个助手工具将这个路由添加到路由表中,我的意思是如果我使用CreateAuthorization并使用这个命令来运行它!它再次提示用户在安装此应用程序时已经提供的root密码,这非常烦人 就像在这个示例应用程序中一样


现在请告诉我应该做什么

最好的地方是查看Apple的pppd和route工具的源代码。两者都应该包含用于添加路由的代码


这不是按预期工作吗?-sudo access仅在一个命令/一段时间内有效。想想钥匙链应用程序。每个特权访问都需要经过CreateAuth。您是否使用DeveloperID或Mac App Store证书对应用程序进行签名?在这样的安全性(如权限)的情况下,维护事先授权的能力需要签名。如果您使用相同的捆绑ID运行应用程序,但没有签名,则该应用程序将无法使用权限。但是,只要您使用标准授权机制,具有相同BundleID并使用相同开发者ID或Mac app Store ID签名的应用程序将在运行期间保持其权限。查看文档时,Mac app Store ID在此处不适用,由于授权服务文档中的沙箱应用程序不允许权限升级,所以在我上面的问题中,只考虑开发者ID