Jump to content

Moonsurfer

Members
  • Posts

    3
  • Joined

  • Last visited

Moonsurfer's Achievements

Seeker

Seeker (1/7)

0

Reputation

  1. Thx Jon. That worked marvalously... kind of ashamed that I didn't think of that...
  2. Hi all, I've been using AutoIT for a while now and I think it's awesome! Normally, I haven't had the need to open a topic because there is so much documentation. However, with this one, I'm kind of stumped. I'm writing a script that would run in the background and make USB drives read only if it detects that its not encrypted. I'm not finished but I've gotten a good bit finished. What I'm having trouble with is the CPU time it uses. It sits at 25% usage. I'm sure it has to do with my endless While loop, but what can I do to not reduce the speed of the script but also let it sit idle? Any suggestions would be greatly appreciated! :-) #include <WindowsConstants.au3> ; Initialize variables Dim $installdir = @WindowsDir & "\USB-Lock\" ; Check if OS is 32 or 64 bit. ; Make sure Install Directory exists. If not, then it's created. If FileExists($installdir) = 0 Then DirCreate($installdir) If @OSArch = "X86" Then FileInstall("\\user2k\users\carcenea\scripts\usb\access\devcon\32-bit\devcon.exe", $installdir & "devcon.exe", 1) Else FileInstall("\\user2k\users\carcenea\scripts\usb\access\devcon\32-bit\devcon.exe", $installdir & "devcon.exe", 1) EndIf ; Initilize WMI Options $strComputer = "." $objWMIServices = ObjGet("winmgmts:" & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2") $sink = ObjCreate("WbemScripting.SWbemSink") ObjEvent($sink,"SINK_") $objWMIServices.ExecNotificationQueryAsync ($sink, "SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE " & "TargetInstance ISA 'Win32_LogicalDisk'") ; Endless loop so that script never ends... While 1 Wend Func SINK_OnObjectReady($objObject, $objAsyncContext) If $objObject.TargetInstance.DriveType = 2 Then Select ; Drive insertion event Case $objObject.Path_.Class()="__InstanceCreationEvent" $drive = $objObject.TargetInstance.DeviceId If FileExists($drive & "\truecrypt\") Then RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies", "WriteProtect", "REG_DWORD", "0") RunWait($installdir & 'devcon.exe restart usbstor*', @WorkingDir, @SW_HIDE) Else MsgBox(48, "Unencrypted USB Drive Detected", "An unencrypted USB drive has been detected. Your USB drive will be placed in READ-ONLY mode. If you want to have full access to it, please contact the Helpdesk at x26333.") EndIf ;~ MsgBox(0, "Drive Inserted", "Drive " & $objObject.TargetInstance.DeviceId & " has been added." & @CR) ; Drive removal event Case $objObject.Path_.Class()="__InstanceDeletionEvent" RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies", "WriteProtect", "REG_DWORD", "1") ;~ MsgBox(0, "Drive Inserted", "Drive " & $objObject.TargetInstance.DeviceId & " has been removed."& @CR) EndSelect EndIf EndFunc
  3. Hello all! First, I'd like to say that I've enjoyed AutoIT for quite several years now. Due to the excellent topics or the forums, I've never had to ask a question. However, this UAC stuff seems a little complex... The code in the script above is a little above my head. What would I need to change/edit to take out the gui so that it only prompts to elevate if necessary? Thanks in advance, Chris
×
×
  • Create New...