因为没有找到对应的开源代码与相关资料,所以在进行该功能实现的时候我们取了巧。在 mac 平台上功能设置依赖于 plist 文件。因此,我们通过 c 代码调用命令行来实现该功能:
// 判断是否加载了 sshd,如果有提示 com.openssh.sshd 证明加载了
sudo launchctl list | grep sshd
// 判断是否加载了 smbd,如果有提示 com.apple.smbd 证明加载了
sudo launchctl list | grep smbd
// 判断是否加载了 screensharing,如果有提示 com.apple.screensharing 证明加载了
sudo launchctl list | grep screensharing
// 卸载
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.smbd.plist
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.screensharing.plist
sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
// 加载
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.screensharing.plist
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
但是这么实现了还是不保准是否用户自己手动加载,因此我们又添加了进程判断。
- 当
/usr/sbin/sshd
运行的时候,ssh 开启了 - 当
/System/Library/CoreServices/RemoteManagement/screensharingd.bundle/Contents/MacOS/screensharingd
运行的时候,屏幕共享开启了 - 当
/usr/sbin/smbd
运行的时候,文件共享开启了
网友评论