密码保护文件夹时陷入循环

Stuck in a loop while password protecting a folder

我想做一个文件夹动作,打开后需要密码才能访问内容,目前代码如下:

on opening folder
    set login to true
    if login = true then
        tell application "Finder"
            close windows
        end tell
        set passw to display dialog ¬
            "Enter your password:" default answer ¬
            "" buttons {"Cancel", "Let me in!"} ¬
            default button 2 ¬
            giving up after 5 with hidden answer
        set entered to text returned of passw
        if entered = "password" then
            tell application "Finder"
                open folder "Myfolder"
            end tell
        end if
    end if
end opening folder

但是,打开Myfolder的时候,明明是需要密码的,而且我输入正确后,window打开一秒就关闭了,需要再次输入密码,并且这种情况一直持续下去。

我想这是因为每次 Myfolder 打开脚本 运行s 并且需要密码,但我该如何解决这个问题?我已经尝试在 open folder "Myfolder"end tell 之后将 login 设置为 false 但这并不意味着 login 每次都设置为 true脚本是 运行.

如何才能永远停止需要密码的脚本?

您可以尝试这样的操作:

property passwordWasGiven : false

on opening folder theFolder
    if passwordWasGiven is false then
        tell application "Finder"
            close theFolder
        end tell
        set passw to display dialog ¬
            "Enter your password:" default answer ¬
            "" buttons {"Cancel", "Let me in!"} ¬
            default button 2 ¬
            giving up after 5 with hidden answer
        set entered to text returned of passw
        if entered = "password" then
            set passwordWasGiven to true
            tell application "Finder"
                open folder theFolder
            end tell
        end if
    else
        set passwordWasGiven to false
    end if
end opening folder

属性在脚本运行期间保留,因此 passwordWasGiven 成为是否输入正确密码的开关。

但是拜托,这是一个非常糟糕的 password-protect 文件夹方式。人们可以在 Finder 关闭文件夹之前暂时看到文件夹的内容;人们可以在命令行上轻松访问内容;人们可以阅读脚本来发现密码。 half-a-brain 的任何人都可以进入。如果你想制作一个安全文件夹,请在命令行上使用磁盘工具或 diskutil 并制作一个加密的磁盘映像。这并不比使用文件夹难——你 double-click 打开它,就像打开文件夹一样——但密码是安全的(假设你选择将其保存在钥匙串中)并且加密很强大.