【问题标题】:Applescript with optional administrator privileges具有可选管理员权限的 Applescript
【发布时间】:2009-10-22 15:32:37
【问题描述】:

我需要运行一个脚本作为应用程序首次运行步骤的一部分,以从以前的版本中删除一些遗留组件。通常这些组件安装在 $HOME/Library 或 /Library 中,脚本可以简单地将它们移动到垃圾箱。

问题是,如果用户不是管理员,并且组件在全局 /Library 中,则脚本需要以管理员身份进行身份验证,否则会失败。我当前的脚本使用 AppleScript,但令我惊讶的是,我找不到在脚本中间成为管理员用户的方法。

有 'do shell script 'foo' with administratorprivilege' 命令,但它总是进行身份验证,并且在 AppleScript 中表达我想要的步骤比在 shell 中更容易,尽管并非不可能。 p>

目前我正面临着尝试在 AppleScript 中移动文件,发现移动失败,然后使用身份验证 shell 脚本使用“mv”移动文件。这看起来很麻烦,那我该怎么做才能让事情变得更整洁呢?

【问题讨论】:

    标签: applescript


    【解决方案1】:

    我会写它来使用“做 shell 脚本”。首先,我会在没有管理员权限的情况下尝试它——如果返回错误,我会使用管理员权限进行尝试。这样,如果不需要管理员凭据,就不会提示用户输入。

    【讨论】:

      【解决方案2】:

      我认为您可以在命令中使用 sudo 前缀,该命令在您上次使用后有 1 分钟的重新身份验证。因此,例如, mv /something /something 将是 sudo mv /something /something

      【讨论】: