如何在 Mac OS X 中以编程方式禁用/断开以太网适配器?

6

我刚接触mac os x编程,现在有一个任务是编写一个小型实用程序,根据配置禁用无线或有线适配器。使用corewlan框架可以断开无线连接,如下所示:

CWInterface interface = [CWInterface interfaceWithName:@"en1"];
BOOL result = [interface setPower:NO error:&err];

它正在按预期工作。我需要类似的代码来禁用/断开以太网适配器。我研究了一下,可以使用ifconfig(如下所述):

sudo ifconfig en0 down 

但是它需要管理员密码,我不想这样做。请建议一种没有根密码的替代编程方式来禁用以太网适配器。

我读到可以使用SCNetworkConfiguration,但不知道如何使用。请帮忙。

谢谢


1
这里有一个替代命令(不幸的是,即使这个也需要管理员密码)。networksetup -setnetworkserviceenabled Ethernet on我从这里得到的:https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/networksetup.8.html - thandasoru
1个回答

0

如果没有管理员权限,您无法关闭网络接口(即网络偏好设置中出现了锁定图标)。可以这样想...您不希望任何非管理员用户在公共计算机上随意关闭网络。

对于我自己的应用程序,在禁用以太网和WiFi时,我必须获取特权来启动单独的工具,以便作为管理员运行SystemConfiguration框架中的内容。


感谢您的回答。现在我有两个问题:1)苹果公司是否批准需要root用户密码的应用程序?(我担心会被拒绝)2)有没有运行代码以特权方式(苹果接受的方式)的示例可以帮助我?例如通过SystemConfiguration框架作为管理员运行。 - M P
问题1的答案是“不”,因为你似乎想要在苹果应用商店上架这个应用程序,而且由于Sandboxing是一个必须的要求,你不能进行任何管理员特权操作。请查看Determine Whether Your App Is Suitable for Sandboxing section。对于我自己的应用程序,我将研究使用ipfw,这可能适用于用户级别的应用程序。 - Michael Dautermann
非常感谢您的澄清。感谢您的帮助。 - M P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接