ãã¡ã¹ãã¦ã¼ã¶ã¹ã¤ãããããç´ æ©ãåãæ¿ãã¦å¿«é©ã«
ファストユーザスイッチã¯ãããã¦ã¼ã¶ã¼ã§ãã°ã¤ã³ç¶æ ãç¶ç¶ããã¾ã¾ãå¥ã®ã¦ã¼ã¶ã¼ã§ããã°ã¤ã³ããæ©è½ã¨ããã°è¯ãã ããããè¤æ°ã®ã¦ã¼ã¶ã¼ã§åæã«ãã°ã¤ã³ãã¦ãããããã®ä½æ¥ç¶æ ãç¶æããã¾ã¾ãç´ æ©ãã¦ã¼ã¶ã¼ãåãæ¿ãããã¨ãå¯è½ã ãï¼ãã°ã¤ã³ããã°ã¢ã¦ãã®èªã¿è¾¼ã¿ãä¸è¦ãªã®ã§ï¼
ã¨ããã§ãOSX 10.4ã®é ããã*1OSå´ãç¨æããゲストアカウントã¨ããã¦ã¼ã¶ã¼ãå©ç¨åºæ¥ãããã«ãªã£ããããã¯ãä¸æçã«ãã°ã¤ã³ããããã®ã¦ã¼ã¶ã¼ã§ããã°ã¢ã¦ãããã¨ãã®ãã¼ã ãã©ã«ãã§ããGuestãã©ã«ããåé¤ãããããã¾ã§ã®ä½æ¥å 容ã¯ç¶ºéºãã£ã±ãã¯ãªã¢ããããï¼Guestãã©ã«ã以å¤ã«ä¿åããæ¸é¡ã¯ç¶æããããï¼ããã¦ãåã³ãã°ã¤ã³ããæã«ã¯ãå¿æ©ä¸è»¢ãOSãç¨æããããã©ã«ãã®ç°å¢ãèµ·åããã®ã ã
èªåã«ã¨ã£ã¦ã¯ãã®ã²ã¹ãã¢ã«ã¦ã³ãã®ä½¿ãåæã¯ã¨ã¦ã便å©ã§ãä½ãã®ãã¹ãã§æãååæ» è¶è¦è¶ãªè¨å®ã«ãã¦è©¦ããã¨ãã§ããã®ã ãã§ãããã°ã¢ã¦ããã¦ãã¾ãã°ãããã¾ã§ã®æ» è¶è¦è¶ã¯ç¶ºéºãã£ã±ãç¡ããªã£ã¦å éããä»ã«ã¯ä¸åå½±é¿ãä¸ããã«ãæ°æã¡è¯ããã¹ããããã¨ãã§ããã
ãã¹ãä¸ã¯ããã®ã²ã¹ãã¢ã«ã¦ã³ãã¨ã¡ã¤ã³ã¢ã«ã¦ã³ãã®éã¯ãé »ç¹ã«è¡ã£ããæ¥ãããããã¨ã«ãªãããã¡ã¹ãã¦ã¼ã¶ã¹ã¤ããã«ãã£ã¦ãã®è¡ãæ¥ã¯ç¸å½å¿«é©ã«ãªã£ãã¯ããªã®ã ããããã§ãé »ç¹ã«è¡ãæ¥ãã¦ããã¨ããã¦ã¹ã®ã¯ãªãã¯ããã¹ã¯ã¼ãã®å ¥åãç ©ããããªã£ã¦ãããçæ³ã¯Spacesã§ãã¹ã¯ããããåãæ¿ããããã«ããã¡ã¹ãã¦ã¼ã¶ã¹ã¤ããã§ãåãæ¿ãããã®ã ï¼
ã²ã¹ãã¢ã«ã¦ã³ãã¸ã®åæ¿
- åºæ¬çã«ä¸è¨ã§ç´¹ä»ããã¦ããAppleScriptããã®ã¾ã¾å©ç¨ããã¦é ãã
set thePassword to "" --ãã®ã¹ã¯ãªããã®ãã¡ã¤ã«åãåå¾ set file_name to name of (info for (path to me)) -- æ¡å¼µåãå«ã¾ãªããã¡ã¤ã«åãåå¾ set AppleScript's text item delimiters to (".") --åºåãæåã«.ãæå® set no_extention_name to first text item of file_name set AppleScript's text item delimiters to "" --åºåãæåãããã©ã«ãã«æ»ã --ãã¡ã¤ã«åããã°ã¤ã³ã¦ã¼ã¶ã¼åã¨ãã¦ã¦ã¼ã¶ã¼idãåå¾ set user_id to do shell script "/usr/bin/id -u " & no_extention_name --ãã¡ã¹ãã¦ã¼ã¶ã¼ã¹ã¤ãããå®è¡ do shell script "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -switchToUserID " & user_id --ãã°ã¤ã³ãã¹ã¯ã¼ãã®å ¥åå¦çï¼GUIã¹ã¯ãªããã£ã³ã°ãæå¹ã§ãããã¨ï¼ if thePassword is not "" then tell application "System Events" tell process "SecurityAgent" to set value of text field 1 of group 1 of window 1 to thePassword click button 2 of window 1 of application process "SecurityAgent" end tell end if
-
-
- ä¸è¨ã¹ã¯ãªãããã¹ã¯ãªããã¨ãã£ã¿ã«ã³ãã¼ããæãï¿¥ï¼åè§ åãã¼ã¯ï¼ããï¼¼ï¼åè§ ããã¯ã¹ã©ãã·ã¥ï¼ã«ç½®ãæããå¿ è¦ããã§ããï¼2ç®æï¼
-
- ãã¡ã¤ã«åããã°ã¤ã³ã¦ã¼ã¶ã¼åã«ãªãã®ã§ãGuest.scptã¨ãã¦ä¿åããã°ãã²ã¹ãã¢ã«ã¦ã³ãã¸ãã°ã¤ã³ã§ããã
- ããã«Quicksilverã§ã·ã§ã¼ãã«ãããå²ãå½ã¦ãã°ããã¼æä½ä¸çºã§ã²ã¹ãã¢ã«ã¦ã³ãã¸åãæ¿ãããã¨ãã§ããã
ãã¹ã¯ã¼ããå¿ è¦ãªã¢ã«ã¦ã³ãã¸ã®åæ¿
- ä¸è¨ã¹ã¯ãªããã«ãã¹ã¯ã¼ããè¨å®ããã°ãåºæ¬çã«ã©ããªã¦ã¼ã¶ã¼ã§ãåãæ¿ãããã¨ãã§ããã®ã ããã²ã¹ãã¢ã«ã¦ã³ãããå©ç¨ããæã«ã¯ã¡ãã£ã¨ã ã工夫ããããªãã
- ã²ã¹ãã¢ã«ã¦ã³ãã¯ãã°ã¢ã¦ãããã¨ãã®ãã¼ã ãã©ã«ã以ä¸ããã¹ã¦åé¤ããã¦ãã¾ãã®ã§ãä¸è¨ã¹ã¯ãªããã®ç½®ãå ´æã¨ãã¦ã¯å ±æãã©ã«ãï¼/Users/Sharedï¼ã«ä¿åãã¦ãããã¨ã«ãªãããã
- ãããã誰ã§ãèªç±ã«ã¢ã¯ã»ã¹å¯è½ãªå ±æãã©ã«ãã«ãã°ã¤ã³ãã¹ã¯ã¼ãã¾ã§è¨å®ãã¦ä¿åãã¦ããã®ã¯ãã»ãã¥ãªãã£ä¸ãåé¡ãããããããã«å¿é ã ã
- ããã§ãpropertyãå©ç¨ãã¦ä»¥ä¸ã®ããã«ä¿®æ£ãã¦ã¿ãã
property pre_msg : "å ¥åãã¦ãã ããã" property user_name : pre_msg property user_pass : pre_msg repeat if user_name is pre_msg or user_name is "" then display dialog "ã¦ã¼ã¶ã¼åï¼" default answer "" with icon note set user_name to text returned of result else exit repeat end if end repeat repeat if user_pass is pre_msg then display dialog "ãã¹ã¯ã¼ãï¼" default answer "" with icon note set user_pass to text returned of result else exit repeat end if end repeat --ãã¡ã¤ã«åããã°ã¤ã³ã¦ã¼ã¶ã¼åã¨ãã¦ã¦ã¼ã¶ã¼idãåå¾ set user_id to do shell script "/usr/bin/id -u " & user_name --ãã¡ã¹ãã¦ã¼ã¶ã¼ã¹ã¤ãããå®è¡ do shell script "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -switchToUserID " & user_id --ãã°ã¤ã³ãã¹ã¯ã¼ãã®å ¥åå¦çï¼GUIã¹ã¯ãªããã£ã³ã°ãæå¹ã§ãããã¨ï¼ delay 0.5 if user_pass is not "" then tell application "System Events" tell process "SecurityAgent" to set value of text field 1 of group 1 of window 1 to user_pass click button 2 of window 1 of application process "SecurityAgent" end tell end if user_name & " ã¦ã¼ã¶ã¼ã¸åæ¿\ncommand-Rã§å®è¡å¯è½"
-
-
- ä¸è¨ã¹ã¯ãªãããã¹ã¯ãªããã¨ãã£ã¿ã«ã³ãã¼ããæãï¿¥ï¼åè§ åãã¼ã¯ï¼ããï¼¼ï¼åè§ ããã¯ã¹ã©ãã·ã¥ï¼ã«ç½®ãæããå¿ è¦ããã§ããï¼3ç®æï¼
-
- ä¸è¨ã¹ã¯ãªãããå ±æãã©ã«ãã«ä¿åï¼/Users/Shared/faster_user_switch.scptï¼ãã¦ãcommand-Iã§æ å ±ã¦ã£ã³ãã¦ã表示ãã¦ãããã¯ãæããã
- ããã«ã¯ãªãã¯ãã¦ã¹ã¯ãªããã¨ãã£ã¿ã§èµ·åãã¦ããã°ãå®è¡ãã¿ã³ã¾ãã¯command-Rã§ã¹ã¯ãªãããå®è¡ã§ããã
- ã¹ã¯ãªããã¨ãã£ã¿ã§èµ·åå¾ã®ååã®ã¿ãã¦ã¼ã¶ã¼åã¨ãã¹ã¯ã¼ãã®å ¥åãæ±ããããã
- ååã®ã¦ã¼ã¶ã¼åã¨ãã¹ã¯ã¼ãã¯ä¿åããã2åç®ä»¥éã®å®è¡ããã¯ç¬æã«åæ¿ãå§ã¾ãã
- ã¹ã¯ãªããã¨ãã£ã¿ãçµäºããã°ãã¦ã¼ã¶ã¼åã¨ãã¹ã¯ã¼ãã¯ã¯ãªã¢ãããã
- é常ãããããã£ã¯ã¹ã¯ãªããã®ãã¡ã¤ã«ã«ä¿æãããããã¹ã¯ãªããã¨ãã£ã¿ããå®è¡ããå ´åã¯ä¿æãããªãã£ãã
- ã¹ã¯ãªããã¨ãã£ã¿ã§ãã®ã¹ã¯ãªãããéãã¦ããéã ããä¿æãããã
- ä¾ãã¹ã¯ãªããã¡ãã¥ã¼ããèµ·åããã¨ãã¦ããããã¯ãæãã£ã¦ããã®ã§ã¦ã¼ã¶ã¼åã¨ãã¹ã¯ã¼ãã¯ä¿æãããªãã®ã ãï¼ããã¯ã解é¤ããã¦ããã°ãä¿æããããï¼
- å ±æãã©ã«ãã«ç½®ããã¹ã¯ãªããï¼/Users/Shared/faster_user_switch.scptï¼ããè¤æ°ã®ã¦ã¼ã¶ã¼ã§åæã«éãã¦ã大ä¸å¤«ãã¹ã¯ãªããã¨ãã£ã¿ã®èµ·åãã¦ããéã ããã¦ã¼ã¶ã¼ãã¨ã«å©ç¨ä¸ã®ãã°ã¤ã³åã¨ãã¹ã¯ã¼ããä¿æãããã
ã¦ã¼ã¶ã¼åãæ¿ããããããå¿«é©ã«ãªã£ãï¼
ã²ã¹ãã¢ã«ã¦ã³ãã®ãã¼ã ãã©ã«ããåé¤ãããªãæ
ä»åã®ã¹ã¯ãªããã§è©¦è¡é¯èª¤ãã¦ããæã«æ°ä»ããã®ã ããã²ã¹ãã¢ã«ã¦ã³ãã®ãã¼ã ãã©ã«ã以ä¸ã«ããã¯ã®æãã£ããã¡ã¤ã«ãåå¨ããã¨ããã°ã¢ã¦ããã¦ããã¼ã ãã©ã«ããåé¤ãããã«æ®ã£ããï¼ãããããããã¯ã®æãã£ããã¡ã¤ã«ãéªéããã¦ããããã ãï¼
- ã²ã¹ãã¢ã«ã¦ã³ãã¯ãã°ã¢ã¦ãããã°å¿ ãããã®ãã¼ã ãã©ã«ãã¯ç¶ºéºãã£ã±ãåé¤ãããã¨æãè¾¼ãã§ããã®ã§ããã®ç¾è±¡ã«ã¯è¦æ³¨æã ã
- å¤é¨ã§ãã²ã¹ãã¢ã«ã¦ã³ãã§ãã°ã¤ã³ãã¦ä½æ¥ããå¾ããã°ã¢ã¦ãå¾ã«æ¬å½ã«ãã¼ã ãã©ã«ããåé¤ããã¦ããã確èªããã¹ããããããªããï¼ããä¸åº¦ãã°ã¤ã³ããã°ç¢ºèªã§ããã¨æããï¼
追è¨
ã³ã¡ã³ãã§ãã³ããé ãã使ãåæã®åä¸ãç®æãã¦ã®ä¿®æ£ã§ãï¼
- ã¹ãã¼ã¹ãå«ãã¦ã¼ã¶ã¼åã«å¯¾å¿
- ãã¹ã¯ã¼ãå ¥åæã«ã¨ã©ã¼ãçºçããªãããã«ä¿®æ£
èµ·åç´å¾ã«deleteãã¼ãæ¼ãã°ãã¦ã¼ã¶ã¼åãå¤æ´ã§ããããã«ä¿®æ£
- ã¢ããªã±ã¼ã·ã§ã³ã¨ãã¦å®è¡ããæ¹å¼ã«å¤æ´
- 以ä¸ã®è¨å®ã§ä¿åãã
- ãã¡ã¤ã«ãã©ã¼ãããï¼ã¢ããªã±ã¼ã·ã§ã³
- ãªãã·ã§ã³ï¼ãå®è¡å¾ãèªåçã«çµäºããªããã®ãã§ãã¯ãå ¥
- ããããã£ã¯å©ç¨ãããã¢ããªã±ã¼ã·ã§ã³ã®èµ·åä¸ã®ã¿ãã¹ã¯ã¼ããç¶æããã
- faster_user_switching.appã®èµ·åæã¯æ¯åã¦ã¼ã¶ã¼åã¨ãã¹ã¯ã¼ããå ¥åããå¿ è¦ããã
- faster_user_switching.appãçµäºããªãéãã2åç®ä»¥éã®èµ·åæä½ã§ã¯èªåå ¥åãããã
- Quicksilverã»LaunchBarçã§ã·ã§ã¼ãã«ãããå²ãå½ã¦ãã¨ä¾¿å©ã
- 以ä¸ã®è¨å®ã§ä¿åãã
global userName
global userPass
on run
set userName to ""
set userPass to ""
main() end run
on reopen
main() end reopen
on main() save_user_name() save_user_pass() fast_user_switch() input_login_password() end main
--ã¦ã¼ã¶ã¼åã®ç»é²ï¼ã¦ã¼ã¶ã¼åãå¤æ´ãããæã¯ããã®ã¹ã¯ãªããèµ·åç´å¾ã«deleteãã¼ãæ¼ãï¼
on save_user_name() if userName = "" then
set msg to "ã¦ã¼ã¶ã¼åãå ¥åãã¦ãã ããã"
set icon_name to note
repeat
activate
display dialog msg default answer userName with icon icon_name
set userName to text returned of result
try
user_id() exit repeat
on error
if userName is not "" then
set msg to "ãã®ã¦ã¼ã¶ã¼ã¯ç»é²ããã¦ãã¾ããã\nããä¸åº¦ãå ¥åãã¦ãã ããã"
set icon_name to caution
end if
end try
end repeat
end if
end save_user_name
--ãã¹ã¯ã¼ãã®ç»é²
on save_user_pass() repeat while userPass is ""
activate
display dialog "ãã¹ã¯ã¼ããå ¥åãã¦ãã ããã" default answer "" with icon note with hidden answer
set userPass to text returned of result
end repeat
end save_user_pass
--ã¦ã¼ã¶ã¼åããã¦ã¼ã¶ã¼IDãåå¾
on user_id() do shell script "/usr/bin/id -u " & quoted form of userName
end user_id
--ãã¡ã¹ãã¦ã¼ã¶ã¼ã¹ã¤ãããå®è¡
on fast_user_switch() do shell script "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -switchToUserID " & user_id() end fast_user_switch
--ãã°ã¤ã³ãã¹ã¯ã¼ãã®å ¥åå¦ç
on input_login_password() tell application "System Events"
repeat 20 times
delay 0.1
if exists window 1 of application process "SecurityAgent" then exit repeat
end repeat
if userPass is not "" then
tell process "SecurityAgent"
keystroke userPass & return
delay 1
keystroke tab using {command down} end tell
end if
end tell
end input_login_password
2012å¹´ã®ä»¥ä¸ã®æ¥è¨ã«ç¶ã...
*1:å®ãã§ã¯ãªããããããããããã£ã¨ä»¥åããå©ç¨ã§ããã®ãããããªãã