macOS 终端与 Swift 应用程序的“fdesetup”结果不同

问题描述 投票:0回答:1

我正在尝试从 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

我在这里缺少什么?我希望权限问题会出现这样的错误消息,所以我假设不是这样。

swift macos
1个回答
0
投票

我确实有问题,我的函数返回 False。我已在命令行工具中复制代码,并且我的函数返回 True/

我不明白,为什么在项目“应用程序”中与在项目“命令行工具”中不好

你有解决办法吗? 谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.