我正在尝试从 Mac 读取并报告 FileVault 状态和其他系统信息。如果我从终端运行命令
fdesetup status
,我会得到输出:
FileVault is On.
但是,如果我在 SwiftUI 应用程序中使用
Process
运行它,我会得到不同的结果:
let fileVaultStatus = runShellCommand("fdesetup status")
private func runShellCommand(_ command: String) -> String {
let task = Process()
task.launchPath = "/bin/zsh"
task.arguments = ["-c", command]
let pipe = Pipe()
let errorPipe = Pipe()
task.standardOutput = pipe
task.standardError = errorPipe
task.launch()
let data = pipe.fileHandleForReading.readDataToEndOfFile()
let output = String(data: data, encoding: .utf8) ?? ""
let errorData = errorPipe.fileHandleForReading.readDataToEndOfFile();
let errorOut = String(data: errorData, encoding: .utf8) ?? ""
print(errorOut)
task.waitUntilExit()
return output
}
这样做的结果是
FileVault is Off
。
我在这里缺少什么?我希望权限问题会出现这样的错误消息,所以我假设不是这样。
我确实有问题,我的函数返回 False。我已在命令行工具中复制代码,并且我的函数返回 True/
我不明白,为什么在项目“应用程序”中与在项目“命令行工具”中不好
你有解决办法吗? 谢谢。