我有一个需要重启Dock应用程序的应用程序。我用Apple Script试过这个:
var errorDict: NSDictionary? = nil
let appleScript = NSAppleScript(source: "tell application \"Dock\" to quit")
var error = appleScript?.executeAndReturnError(&errorDict)
if let errorDict = errorDict {
println("An error occured: \(errorDict)")
}
...和NSTask
:
let task = NSTask()
task.launchPath = "/usr/bin/killall"
task.arguments = ["Dock"]
task.launch()
...和另一个NSTask
:
func restartFinder () {
let task = NSTask()
task.launchPath = "/bin/bash"
task.arguments = ["killall Dock"]
task.launch()
}
但是,似乎我的应用程序不允许重新启动它。我想将我的应用程序发布到AppStore,但是如何重新启动Dock?
使用Apple Script时出错:
An error occured: {
NSAppleScriptErrorAppName = Dock;
NSAppleScriptErrorBriefMessage = "Application isn\U2019t running.";
NSAppleScriptErrorMessage = "Dock got an error: Application isn\U2019t running.";
NSAppleScriptErrorNumber = "-600";
NSAppleScriptErrorRange = "NSRange: {27, 4}";
}
使用NSTask
时出错:
killall: warning: kill -TERM 255: Operation not permitted
更新
我也用STPrivilegedTask试了一下,这对我也没用。我也没有得到验证窗口。
答案 0 :(得分:1)
我会尝试使用Applescript,但是喜欢这样:
var errorDict: NSDictionary? = nil
let appleScript = NSAppleScript(source: "do shell script \"killall Dock\" with administrator " +
"privileges")
var error = appleScript?.executeAndReturnError(&errorDict)
if let errorDict = errorDict {
println("An error occured: \(errorDict)")
}
这样,它以管理员权限执行shell脚本(就像通过终端一样)。问题是因为这是一项通常只由系统或用户完成的任务,它要求您输入管理员密码。