我过去在 Lazarus Pascal 中创建了一个应用程序,它执行“dd”以将图像写入驱动器。为此,显然需要提升权限。
在我使用的初始版本AuthorizationExecuteWithPrivileges()
(链接)中,尽管并非完全用于此目的,但它确实运行良好且非常一致。但是,此功能自 OSX 10.7 以来已被贬值,因为它可能是一个安全问题,并且重定向的命令行语句也无法正常工作(重定向输出zip
作为 的输入dd
)。
在下一个版本中,我使用了 Lazarus Pascal Wiki(执行外部程序)中描述的方法,它基本上启动了一个与我的程序通信的 TProcess。使用sudo -S dd ...
,会询问并输入用户密码以确保他/她具有适当的访问权限。显然,这是一种肮脏的黑客方法,它表明某些用户会遇到问题。
经过大量阅读后,Apple 似乎更喜欢使用名为SMJobBless()的辅助工具来完成此操作。不幸的是,当谈到 Objective-C 时,我不是很有经验,所提供的代码似乎充其量只是很少,也没有很好的文档记录。
我想知道是否有人有经验或可以协助将这种方法“移植”到Lazarus Pascal ......我都赞成做对。当然,替代方法也是最受欢迎的!
任何帮助将不胜感激。