如何解决AppleScript创建别名需输入管理员密码的问题?
我明白你的困扰——AppleScript自带的make new alias命令确实没法直接传递管理员密码,每次弹密码框确实麻烦。不过咱们可以绕个弯,借助shell命令和sudo来实现自动带权限创建,分两种情况给你方案:
解决方案:两种方式实现免密码提示创建带权限的别名
方式一:创建Unix符号链接(简单快速)
如果只是需要一个能跳转的“别名”,Unix层面的符号链接完全够用,而且可以通过sudo直接带密码执行。符号链接的唯一缺点是不会像Finder别名那样跟踪原文件夹的移动,但日常使用大多场景都没问题。
代码示例:
-- 选择源文件夹和目标位置 set mySource to POSIX path of (choose folder with prompt "选择源文件夹:") set myLocation to POSIX path of (choose folder with prompt "选择要存放别名的目标文件夹:") set aliasName to "我的文件夹别名" -- 自定义别名的名称 -- 安全获取管理员密码(不要硬写在脚本里!) set passwordDialog to display dialog "请输入管理员密码:" default answer "" with hidden answer buttons {"取消", "确认"} default button "确认" set adminPassword to text returned of passwordDialog -- 构建shell命令并执行,创建符号链接 set shellCommand to "sudo ln -s " & quoted form of mySource & " " & quoted form of (myLocation & aliasName) do shell script shellCommand password adminPassword with administrator privileges
方式二:创建真正的Finder别名(支持跟踪原文件夹移动)
如果你必须要和原make new alias命令创建的一样的Finder别名(能自动跟踪源文件夹的移动),可以通过sudo调用osascript来执行创建别名的AppleScript代码,这样就能提升权限而不弹系统密码框。
代码示例:
-- 选择源文件夹和目标位置 set mySource to choose folder with prompt "选择源文件夹:" set myLocation to choose folder with prompt "选择要存放别名的目标文件夹:" set aliasName to "我的文件夹别名" -- 自定义别名的名称 -- 安全获取管理员密码 set passwordDialog to display dialog "请输入管理员密码:" default answer "" with hidden answer buttons {"取消", "确认"} default button "确认" set adminPassword to text returned of passwordDialog -- 把创建别名的AppleScript代码转成字符串,让sudo来执行 set createAliasScript to "tell application \"Finder\" to make new alias at POSIX file \"" & POSIX path of myLocation & "\" to POSIX file \"" & POSIX path of mySource & "\" with properties {name:\"" & aliasName & "\"}" do shell script "sudo osascript -e '" & createAliasScript & "'" password adminPassword with administrator privileges
重要安全提醒
千万不要把管理员密码直接硬编码在脚本里!上面的代码用了display dialog来安全获取密码,避免密码泄露的风险。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

