BeeranStream Posted October 17, 2005 Posted October 17, 2005 Hi , first of all .. a great thanks to the AutiIT guys , excellent software. Now .. does anybody know if is possible to capture the origininating executable if i'm for example calling my "autit.exe" from another executable or script like batch/kix .. i would like to restrict inside the "autoit.exe" file "who"/"what" can execute my precious compiled autoit files Thanks for any assistance , been scratching my head alot on this one .. hehe /B
quaizywabbit Posted October 17, 2005 Posted October 17, 2005 I think you'll have to use Group Policies/Permissions to accomplish this.... [u]Do more with pre-existing apps![/u]ANYGUIv2.8
BeeranStream Posted October 18, 2005 Author Posted October 18, 2005 I think you'll have to use Group Policies/Permissions to accomplish this....hm, policies wont be that good for me .. i was wondering if i could set some in-paramater that tells me if the autoit.exe was started by "login.bat" or some other exec.I dont want to limit the exectuion on a policy level since everyone needs to execute this exe file , just that it needs to be executed from a certain logon script.
LxP Posted October 18, 2005 Posted October 18, 2005 Not the prettiest piece of code but it'll do the job for you. Can be modified easily enough to return the parent's PID if preferred. Requires PsList to work (free; can be included within your script using FileInstall()).expandcollapse popupMsgBox(0x40, 'GetParentProcessName()', GetParentProcessName()) Func GetParentProcessName() ; @Error = 1 -> Could not run PSList ; @Error = 2 -> Could not find script PID in output ; @Error = 3 -> Could not determine the parent ; Get the necessary information from PSList Local $PrevOpt = Opt('RunErrorsFatal', 0) Local $PSList = Run('PSList -T', '', '', 2) Local $Error = @Error Opt('RunErrorsFatal', $PrevOpt) If ($Error) Then SetError(1) Return '' EndIf Local $PInfo = '' Do $PInfo &= StdOutRead($PSList, 4096) Until @Error ; Convert the data into an array for easy line-by-line access $Pinfo = StringSplit($PInfo, @CRLF, 1) ; Determine line number of corresponding entry Local $Line, $Success = False For $Line = 1 To $PInfo[0] If StringRegExp($PInfo[$Line], '.*?' & @AutoItPID & '(?:\s+\d+){6}\>') Then $Success = True ExitLoop EndIf Next If Not($Success) Then SetError(2) Return '' EndIf ; Determine indentation amount of this information Local $Indent = StringLen($PInfo[$Line]) - StringLen(StringStripWS($PInfo[$Line], 1)) ; Find the first previous line with a lower indentation ; This line will hold information on the parent While $Line > 0 $Line -= 1 Local $Temp = StringLen($PInfo[$Line]) - StringLen(StringStripWS($PInfo[$Line], 1)) If $Temp < $Indent Then Local $Ret = StringRegExp($PInfo[$Line], '\s*(.*)(?:\s+\d+){7}\>', 1) Return $Ret[0] EndIf WEnd SetError(3) Return '' EndFunc
DaveF Posted October 18, 2005 Posted October 18, 2005 Just have your batch file set an environment variable at its beginning, run your AutoIt script which tests for the existence of the environment variable before taking any action, then unset the environment variable at the end of the batch file. You don't have to care if the user can run the script, you can just make it so it doesn't do anything outside your sanctioned duty for it. Environment variables are sufficiently arcane these days that most users don't know they exist, so I think it would be a decent way to foil undesired use of your compiled script. Yes yes yes, there it was. Youth must go, ah yes. But youth is only being in a way like it might be an animal. No, it is not just being an animal so much as being like one of these malenky toys you viddy being sold in the streets, like little chellovecks made out of tin and with a spring inside and then a winding handle on the outside and you wind it up grrr grrr grrr and off it itties, like walking, O my brothers. But it itties in a straight line and bangs straight into things bang bang and it cannot help what it is doing. Being young is like being like one of these malenky machines.
w0uter Posted October 18, 2005 Posted October 18, 2005 pass a user/password through the commandline. (will stop most users) My UDF's:;mem stuff_Mem;ftp stuff_FTP ( OLD );inet stuff_INetGetSource ( OLD )_INetGetImage _INetBrowse ( Collection )_EncodeUrl_NetStat_Google;random stuff_iPixelSearch_DiceRoll
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