在swift应用程序中以root身份运行命令

时间:2018-04-09 23:28:13

标签: swift xcode root privileges nstask

我试图在Xcode中实现一个简单的应用程序,让我打开和关闭wifi界面。但是,ifconfig命令需要root权限才能运行“up”和“down”。我试过运行NSAppleScript但它返回

  

MessageTracer:回退到默认白名单

我也尝试过更改可执行文件的权限,但也没有运气。任何人都可以帮助我以特权或任何其他方式运行命令吗?先谢谢你(抱歉,我是菜鸟)!

这是我的AppDelegate.swift:

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
let statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.squareLength)

@objc func command(_ sender: Any?) {

    let task = Process()
    task.launchPath = "/sbin/ifconfig"
    task.arguments = ["en0", "down"]
    task.launch()

}

func applicationDidFinishLaunching(_ aNotification: Notification) {
    if let button = statusItem.button {
        button.image = NSImage(named:NSImage.Name("Icon-main"))
        button.action = #selector(command(_:))

    }
}

func applicationWillTerminate(_ aNotification: Notification) {
    // Insert code here to tear down your application
    }
}

1 个答案:

答案 0 :(得分:-2)

创建一个命令行工具,并使用sudo从{{1}}运行它。