2014-09-20 4 views
-3

Я сделал поддельный вирус, чтобы попробовать своих друзей: P Но мне было интересно, есть ли код, который отключает функцию командной строки-escape до тех пор, пока приложение не завершится. Я просто хочу, чтобы они испытали весь процесс моего эксперимента, не заставив их бросить его на полпути. Благодаряесть способ отключить принудительное завершение, пока приложение applescript все еще работает?

: Edit- Это просто простой скрипт, который я думал, что я мог бы показать моим друзьям, но я просто не хочу, чтобы заставить бросить его после первых нескольких секунд, они все еще имеют полный контроль над их макинтош

диалог

дисплея "Play MagroXELA игры" кнопка кнопки по умолчанию 1 { "Play", "Выход"}, если кнопка возвращается в результате "Play", то

комплекта объем 5

гудок 5

display dialog "Virus is downloading." buttons "Stop" default button "Stop" with title "Malware Initiating" with icon 2 
delay 2 
set volume 5 
do shell script "say -v Zarvox Virus has Down loaded Successfully" 
delay 2 
do shell script "say -v Zarvox Wifi terminated" 
beep 1 
-- 
-- Toggle Airport Power On and Off 
-- 
if (offset of "On" in (do shell script "networksetup -getairportpower en1")) > 0 then 
    do shell script "networksetup -setairportpower en1 off" 

end if 

tell application "Finder" 
    activate 
    open application file "Activity Monitor.app" of folder "Utilities" of folder "Applications" of startup disk 
    open application file "AirPort Utility.app" of folder "Utilities" of folder "Applications" of startup disk 
    open application file "Boot Camp Assistant.app" of folder "Utilities" of folder "Applications" of startup disk 
    open application file "Bluetooth File Exchange.app" of folder "Utilities" of folder "Applications" of startup disk 
    open application file "Disk Utility.app" of folder "Utilities" of folder "Applications" of startup disk 
    open application file "Keychain Access.app" of folder "Utilities" of folder "Applications" of startup disk 
    open application file "Terminal.app" of folder "Utilities" of folder "Applications" of startup disk 
    open application file "System Information.app" of folder "Utilities" of folder "Applications" of startup disk 
end tell 


tell application "Finder" 
    activate 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    make new Finder window 
    set target of Finder window 1 to startup disk 
    set target of Finder window 1 to startup disk 
    open application file "Terminal.app" of folder "Utilities" of folder "Applications" of startup disk 
    set target of Finder window 1 to startup disk 
    set target of Finder window 1 to folder "Applications" of startup disk 
end tell 

delay 6 
tell application "DigitalColor Meter" to quit 
tell application "Grab" to quit 
tell application "Network Utility" to quit 
tell application "System Information" to quit 
tell application "Terminal" to quit 
tell application "Keychain Access" to quit 
tell application "Disk Utility" to quit 
tell application "Bluetooth File Exchange" to quit 
tell application "Boot Camp Assistant" to quit 
tell application "AirPort Utility" to quit 
tell application "Activity Monitor" to quit 
tell application "App Store" to quit 
tell application "iTunes" to quit 
tell application "Finder" 
    repeat while window 1 exists 
     close window 1 
    end repeat 
    delay 2 
    set volume 5 
    do shell script "say -v Alex YOU GOT TROLLED HUH HUH HUH HUH" 
    delay 2 
    do shell script "say -v Zarvox Wifi activated" 

    -- 
    -- Toggle Airport Power On and Off 
    -- 
    if (offset of "On" in (do shell script "networksetup -getairportpower en1")) > 0 then 
     do shell script "networksetup -setairportpower en1 off" 
    else 
     do shell script "networksetup -setairportpower en1 on" 
    end if 
    delay 4 
+1

Мы, конечно, не поможет вам предотвращения кто-то из получить обратно контроль над его компьютер. Почему мы должны верить, что это безобидный сценарий, который вы просто дадите своим друзьям? – idmean

+0

Я отправил сценарий, чтобы показать, что он делает, просто подумал, что будет сценарий, который отключил бы силу, или даже просто спрятать приложение из меню принудительного закрытия. Я бы не хотел, чтобы они потеряли контроль над своим компьютером –

+0

действительно есть способ достичь этого. Хотя сценарий, который вы опубликовали, не выглядит очень опасным, вы все равно можете использовать информацию, которую я вам дал для другого действительно злого сценария. И один теряет контроль над своим Mac, когда начинает открывать несколько приложений и много окон. – idmean

ответ

3

Вы также можете сделать это следующим образом:

  1. Сохраните сценарий как приложение (Файл> Сохранить и выберите в качестве формата файла приложения) в любом месте на вашем Mac. Затем закройте редактор AppleScript.

  2. Затем перейдите в приложение в Finder и нажмите правую кнопку мыши и выберите Show Package Contents

  3. каталог, содержащий каталог Contents будет отображаться. Внутри этой папки будет файл с именем Info.plist

  4. Открыть этот файл с помощью избранного текстового редактора (например, TextEdit).

Затем добавьте этот код в конец файла перед тем последний </dict>:

<key>LSBackgroundOnly</key> 
<true/> 

Так что последние четыре строки файла вида:

<key>LSBackgroundOnly</key> 
    <true/> 
</dict> 
</plist> 

Сохраните файл, и вы готовы к работе. Вы можете закрыть текстовый редактор и дважды щелкнуть приложение.

Это свойство заставляет OS X запускать приложение в качестве фонового процесса, а фоновые процессы не отображаются в Dock, и они не отображаются в окне Force Quit.Конечно, вы можете принудительно выйти из приложения с помощью Activity Monitor.

Сообщите, что это свойство не допускает взаимодействия с пользователем, например display dialog или choose folder.

(Если вы открываете приложение в AppleScript Editor вы должны повторить это шаги, потому что редактор сценариев переопределяет info.plist при каждом сохранении)

+0

Да, я только что нашел это несколько часов назад, кроме как вместо LSUIelement, спасибо за помощь. Кстати, что вы имели в виду под «Имейте в виду, что это свойство не позволяет использовать какое-либо взаимодействие с пользователем, например диалоговое окно просмотра или выбрать папку». И LSBackground, и LSUIelement похожи, но я могу видеть диалоговое окно дисплея и вы можете нажать на кнопки. –

+0

@AlexDylanMagri AppleScript иногда выходит из приложения с сообщением «UI not allowed», когда вы показываете диалог, что я имел в виду. Если мой или любой ответ разрешил ваш вопрос, пожалуйста, рассмотрите [принятие его] (http://meta.stackexchange.com/q/5234/179419), щелкнув галочку. Это указывает более широкому сообществу, что вы нашли решение и дали некоторую репутацию как самому, так и самому себе. Это не обязательно. – idmean

+0

ладно спасибо, я нажал галочку, так как я уверен, что другие найдут это полезным. Спасибо. Новое на этом сайте –

1

Вы можете выполнить любой код приложения, используя инструмент командной строки «osascript». Запуск инструментов командной строки не отображается в меню принудительного закрытия, поэтому этот метод должен работать на вас. Например предположим, что это был ваш AppleScript ...

tell application "TextEdit" to activate 
delay 5 
tell application "TextEdit" to quit 

Вот как запустить, что с помощью osascript.

set theCode to "tell application \"TextEdit\" to activate 
delay 5 
tell application \"TextEdit\" to quit" 

do shell script "echo " & quoted form of theCode & " | osascript > /dev/null 2>&1 &" 

Таким образом, в основном все, что вам нужно сделать, это преобразовать ваш код applescript в текст и затем отправить его в osascript, как показано.

Удачи.

+0

Я попробую это и посмотрю. Спасибо :) –