-
Posts
64 -
Joined
-
Last visited
About duckling78
- Birthday 03/10/1978
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
duckling78's Achievements

Wayfarer (2/7)
1
Reputation
-
Here's a hacky script I made to make the music key on my keyboard click the back button on my Chrome browser. You need to compile the script in to an exe, and associate "cda" file extension to the executable. Note- this also means you can reassign the music key on your keyboard to whatever executable you want using this method! AutoItSetOption("WinTitleMatchMode", 2) HotKeySet("{Escape}", "exitScript") $chromePos = WinGetPos("Chrome") If (@error <> 0) Then ConsoleWriteError("Can not find Chrome window - WinGetPos returned @error: " & @error & @CRLF) Exit EndIf $originalMousePos = MouseGetPos() MouseClick("primary", $chromePos[0] + 20, $chromePos[1] + 45, 1, 2) MouseMove($originalMousePos[0], $originalMousePos[1], 2) Func exitScript() ConsoleWrite("Exiting script..." & @CRLF) Exit EndFuncYay AutoIt3 community. Unfortunately, for the most part at work I've moved on to OSX machines (meh). Seems like that's what all the companies are developing on lately.
-
javiwhite reacted to a post in a topic: Edit control has 30000 character limit
-
I'm a game developer and we're finally getting to the point where I can start working on some tests for my game. I'm kind of familiar with AutoIt3 so I decided to write a script to smoke test my game. We build our game using Jenkins and have a slave Windows Jenkins machine to do any visual tests that need to be done (and also compile the game due to a bug in Unity's -nographics parameter causing the builds to be corrupt without this workaround ). My question is...is there a way to report to Jenkins the pass/fail results of the smoke test and have it formatted in some way readable to Jenkins? I've been staring at Ant and xUnit stuff (and RobotFramework and a bunch of other stuff) but all that stuff seems confusing and not exactly straight forward
-
Speed up any game! (process set priority = high)
duckling78 replied to duckling78's topic in AutoIt Example Scripts
What you say is true, but for gamers that want their single threaded game (most games unfortunately) to run as fast as possible, the "high" priority type seems to work wonders. Just toggling it to normal using the provided hotkey before task switching away from the game should be fine. Most of the time I'm playing these games I'm *only* playing the games and don't want other things on the computer taking CPU time away from the game. My computer: Core 2 Duo 3 Ghz, nVidia GTX 280, 4 GB, Vista 64 Bit Global Agenda performance: Normal priority: 15-40 FPS High priority: 45-80 FPS This makes no sense to me why I get such huge gains in frame rate, but I like it a lot I see very similar frame rate improvements in Gotham City Imposters but I haven't played that as long since it kind of just came out a couple of weeks ago. I added some descriptive consts in case anyone wants to fool around with the other priority levels, but I've seen some great gains using the "high" setting. Don't use the "realtime" setting. I've never had any good results with that. -
Speed up any game! (process set priority = high)
duckling78 posted a topic in AutoIt Example Scripts
I found the following games benefit significantly if you change their process priority to "high": Global AgendaLeague of LegendsTeam Fortress 2CoD Black OpsBrawl BustersGotham City ImitatorsTribes AscendI got tired of opening Task Manager, going to the Processes tab, looking for the executable, right clicking on it, selection Priority and setting it to high every time I started a game, so I made this script to set the currently running process to High Priority with one key press (by default it is set to Ctrl + NumPadAdd). #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.6.1 Author: micsun Script Function: Set the current running application to be high priority. Default keys: Ctrl + NumPadAdd: Sets the current process to "high" priority level Ctrl + NumPadSub: Sets the current process to "normal" priority level Ctrl + Shift + Alt + Esc: Exit the script #ce ---------------------------------------------------------------------------- #include <Process.au3> #include <WinAPI.au3> #include <Misc.au3> If (_Singleton("AutoPriority", 1) == 0) Then MsgBox(0, @ScriptName, "Another instance of this script is currently running.") Exit EndIf Const $CTRLALTSHIFT_ESC = "+^!{Esc}" Const $CTRL_NUMPADADD = "^{NumPadAdd}" Const $CTRL_NUMPADSUB = "^{NumPadSub}" Const $PRIORITY_IDLE = 0 Const $PRIORITY_BELOW_NORMAL = 1 Const $PRIORITY_NORMAL = 2 Const $PRIORITY_ABOVE_NORMAL = 3 Const $PRIORITY_HIGH = 4 Const $PRIORITY_REALTIME = 5 Const $TRAY_AUTO_PAUSE_DISABLED = 0 Const $TRAY_AUTO_PAUSE_ENABLED = 1 Const $TRAY_MENU_MODE_DEFAULT = 0 Const $TRAY_MENU_MODE_NO_DEFAULT = 1 Const $TRAY_ON_EVENT_MODE_DISABLE = 0 Const $TRAY_ON_EVENT_MODE_ENABLE = 1 init() While True Sleep(1000) WEnd Func init() initTray() initHotkeys() EndFunc Func initTray() Opt("TrayAutoPause", $TRAY_AUTO_PAUSE_DISABLED) Opt("TrayMenuMode", $TRAY_MENU_MODE_NO_DEFAULT) Opt("TrayOnEventMode", $TRAY_ON_EVENT_MODE_ENABLE) TrayItemSetOnEvent(TrayCreateItem("Exit " & StringTrimRight(@ScriptName, 4)), "onExitClicked") EndFunc Func onExitClicked() Exit EndFunc Func initHotkeys() HotKeySet($CTRLALTSHIFT_ESC, "exitScript") HotKeySet($CTRL_NUMPADADD, "setPriorityHigh") HotKeySet($CTRL_NUMPADSUB, "setPriorityMedium") EndFunc Func setPriorityHigh() ConsoleWrite("+" & @CRLF) setActiveWindowPriority($PRIORITY_HIGH) EndFunc Func setPriorityMedium() ConsoleWrite("-" & @CRLF) setActiveWindowPriority($PRIORITY_NORMAL) EndFunc Func setActiveWindowPriority($priority_type) $windowList = WinList() For $i = 1 to $windowList[0][0] $winName = $windowList[$i][0] If (isActive($winName)) Then ProcessSetPriority(WinGetProcess($winName), $priority_type) Return EndIf Next EndFunc Func isActive($win_name) Return (($win_name <> "") And WinActive($win_name) EndFunc Func exitScript() Exit EndFunc To set the active process to normal: Ctrl + NumPadSub To quit the script, just right click on the tray icon and select "Exit" or press Ctrl+Alt+Shift+Esc. -
I made a script to test my mouse to see if the middle button and the two thumb buttons are registering correctly. Here it is! #include <Misc.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> Local $r = 0x800000 Local $g = 0x008000 main() Func main() Opt("GUIOnEventMode", 1) HotKeySet("{Esc}", "exitScript") #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Mouse Button Test", 310, 272, 192, 124) GUISetOnEvent($GUI_EVENT_CLOSE, "exitScript") $textMiddle = GUICtrlCreateLabel("Middle", 112, 8, 62, 27) GUICtrlSetFont($textMiddle, 12, 400, 0, "Arial Black") GUICtrlSetColor($textMiddle, $r) $textFront = GUICtrlCreateLabel("Side Front", 16, 80, 95, 27) GUICtrlSetFont($textFront, 12, 400, 0, "Arial Black") GUICtrlSetColor($textFront, $r) $textBack = GUICtrlCreateLabel("Side Back", 64, 144, 93, 27) GUICtrlSetFont($textBack, 12, 400, 0, "Arial Black") GUICtrlSetColor($textBack, $r) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### $dll = DllOpen("user32.dll") $MIDDLE_BUTTON = "04" $BACK_BUTTON = "05" $FORWARD_BUTTON = "06" $mP = False $bP = False $fP = False While True $mC = _IsPressed($MIDDLE_BUTTON) $bC = _IsPressed($BACK_BUTTON) $fC = _IsPressed($FORWARD_BUTTON) setColor($textMiddle, $mC) setColor($textFront, $fC) setColor($textBack, $bC) If ($mP <> $mC Or $bP <> $bC Or $fP <> $fC) Then ConsoleWrite("M: " & $mC & ", F: " & $fC & ", B: " & $bC & @CRLF) $mP = $mC $bP = $bC $fP = $fC EndIf Sleep(5) WEnd EndFunc Func setColor($text, $active) If ($active) Then GUICtrlSetColor($text, $g) Else GUICtrlSetColor($text, $r) EndIf EndFunc Func exitScript() Exit EndFunc One thing I found out was that the middle mouse button on the Logitech g9x is unreliable. If you hear the clicking sound it doesn't mean the mouse button is down. There are variable pressures in the button that will activate or deactivate the button. Very annoying! I'm going to see if Logitech can give me a new mouse without this problem... Also I've noticed the two side buttons don't register properly using some specific mouse covers (using g9 mouse cover on the g9x). This was more of a troubleshooting step since I like the g9's mouse cover texture better than the newer g9x's.
-
The main website for AutoIt (http://autoitscript.com) is not loading in Firefox or Safari. I tested this on both my Windows and Mac machines and they both show the same results. Internet Explorer works. I filed a bug at the following location with a full description of what is happening: http://www.autoitscript.com/trac/autoit/ticket/1852 (I have a feeling this isn't really something that should be tracked in there but I filed it just in case) Thanks!
-
Ha. I optimized the code to parse two dictionary files FROM ~12 hours DOWN TO 21 seconds! Here's a log of the results: 090430_001159: Reading contents of file to $arrayA... 090430_001159: Reading contents of file to $arrayB... 090430_001200: Starting comparisons... UBound($arrayA) - 1: 161017 090430_001205: Status: 10000/161017 (6%) 090430_001210: Status: 20000/161017 (12%) 090430_001214: Status: 30000/161017 (18%) 090430_001219: Status: 40000/161017 (24%) 090430_001224: Status: 50000/161017 (31%) 090430_001228: Status: 60000/161017 (37%) 090430_001233: Status: 70000/161017 (43%) 090430_001238: Status: 80000/161017 (49%) 090430_001244: Status: 90000/161017 (55%) 090430_001249: Status: 100000/161017 (62%) 090430_001254: Status: 110000/161017 (68%) 090430_001259: Status: 120000/161017 (74%) 090430_001304: Status: 130000/161017 (80%) 090430_001309: Status: 140000/161017 (86%) 090430_001314: Status: 150000/161017 (93%) 090430_001319: Status: 160000/161017 (99%) 090430_001320: Finished! Here's the source! #include <File.au3> #include <Array.au3> HotKeySet("!+^x", "exitScript") Dim $arrayA, $arrayB FileDelete("NotInB.txt") Blah("Reading contents of file to $arrayA...") _FileReadToArray("sortedA.txt", $arrayA) Blah("Reading contents of file to $arrayB...") _FileReadToArray("sortedB.txt", $arrayB) $fileNotInB = FileOpen("NotInB.txt", 9) #comments-start --- uncomment the below section to create sorted files --- Blah("Starting _ArraySort($arrayA)...") _ArraySort($arrayA) Blah("Starting _ArraySort($arrayB)...") _ArraySort($arrayB) Blah("Finished sorting arrays.") Blah("Writing sortedA.txt...") _FileWriteFromArray("sortedA.txt", $arrayA) Blah("Writing sortedB.txt...") _FileWriteFromArray("sortedB.txt", $arrayB) Blah("Exiting.") Exit #comments-end --- uncomment the above section to create sorted files --- $maxA = UBound($arrayA) - 1 Blah("Starting comparisons... UBound($arrayA) - 1: " & $maxA) For $checkA = 1 To $maxA If Mod($checkA, 10000) == 0 Then Blah("Status: " & $checkA & "/" & $maxA & " (" & Int($checkA / $maxA * 100) & "%)"); EndIf $arrayA[$checkA] = StringStripWS($arrayA[$checkA],2) If AinB($arrayA[$checkA]) = False Then ;Blah('"' & $arrayA[$checkA] & '" is not in $arrayB.') FileWriteLine($fileNotInB, $arrayA[$checkA]) EndIf Next Blah("Finished!") Func AinB($wordCheckA) $start = 1 $end = UBound($arrayB) $last = 1 While True $check = Int(($start + $end) / 2) If $check == $last Then ;Blah(">>>>>>>>>>>>>> FALSE: " & $wordCheckA & " is NOT in $fileB. -- $check: " & $check & " $last: " & $last) Return False EndIf $wordCheckB = StringStripWS($arrayB[$check], 2) $compare = StringCompare($wordCheckA, $wordCheckB, 2) ;Blah("$start: " & $start & " $end: " & $end & " $check: " & $check & " $wordCheck: " & $wordCheckA & " $arrayB[$check]: " & $wordCheckB) If $compare < 0 Then ;Blah("$compare < 0 ... 1: " & $wordCheckA & " 2: " & $wordCheckB) $end = $check ElseIf $compare > 0 Then ;Blah("$compare > 0 ... 1: " & $wordCheckA & " 2: " & $wordCheckB) $start = $check Else ;Blah(">>>>>>>>>>>>>> TRUE: " & $wordCheckA & " is in $fileB. -- $check: " & $check & " $last: " & $last) Return True EndIf $last = $check WEnd EndFunc Func timeStamp() Return StringRight(@YEAR, 2) & @MON & @MDAY & "_" & @HOUR & @MIN & @SEC EndFunc Func exitScript() ConsoleWrite("Exiting script" & @CRLF) Exit EndFunc Func Blah($text) ConsoleWrite(timeStamp() & ": " & $text & @CRLF) EndFunc
-
Just as a side note it took about 12 hours to parse the words between two dictionary files (about 3 megs in length each). I'm reading through Steven S. Skiena's "The Algorithm Design Manual" now and hopefully I won't have such horribly inefficient coding in the future. One algorithm that I've read about so far would have significantly reduced the duration. Assuming the dictionary files were alphabetical (which they weren't). 1. The words would all go into array values (as ChrisFromBoston suggested) 2. The word in the middle of the array would be compared to the current search word 3. If the value is after or before the current word, then half the values in the dictionary would be ruled out 4. Keep repeating until the word is not after or before the current word (is the current word) or else does not exist This would take less than 100 iterations of checks vs a straight dictionary check to narrow down the words in a dictionary file and each word would probably have taken milliseconds vs seconds to process. Hmm, I'll keep reading this book, it's kind'a nice
-
I am trying to compare two dictionary files (about 2 megs in length each) and need to know which words are not in the other. The dictionary files have one word on each line. I made a quick script to parse the files and compare each word, but it's taking forever to finish. Is it possible to improve the speed of this much? -- or is there a better solution? Windiff seems to work so quickly, but it doesn't give the results I need. $fileA = FileOpen("A.txt", 0) $fileB = FileRead("B.txt") $fileNotInB = FileOpen("NotInB.txt", 9) While True $stringA = FileReadLine($fileA) If @error == -1 Then ExitLoop $stringA = StringStripWS($stringA, 2) If StringInStr($fileB, $stringA, 2) == 0 Then ConsoleWrite('"' & $stringA & '" is not in $fileB.' & @CRLF) FileWriteLine($fileNotInB, $stringA) EndIf WEnd ConsoleWrite("Finished at " + @MON & "/" & @MDAY & "/" & @YEAR & " " & _ @HOUR & ":" & @MIN & ":" & @SEC & "." & @CRLF)
-
Entering "name" without the extension is a bit awkward for me. Maybe use something like the following instead? $objWMIService = ObjGet("winmgmts:\\" & $sComputerName & "\root\CIMV2") if @error then return -2 if number($strProcess) then $strProcess = " WHERE IDProcess = '" & $strProcess & "'" else $processList = ProcessList($strProcess) If $processList[0][0] > 0 Then For $i = 1 To $processList[0][0] If $processList[$i][0] = $strProcess Then $strProcess = " WHERE IDProcess = '" & $processList[$i][1] & "'" EndIf Next Else Return "NA" ; Return no process found. EndIf endif
-
Registry save checkpoint, compare to checkpoint
duckling78 replied to duckling78's topic in AutoIt Example Scripts
Fixed the script to work on Vista. The "reg" executable has some different parameters on XP vs Vista. I believe I'm done with this. The updated script is in the original post. -
I'm creating a registry checkpoint and comparing function at: http://www.autoitscript.com/forum/index.ph...t=0#entry612836 I am currently parsing the results of the "reg.exe" command ("reg compare ....."). This isn't as precise as I'd like it, but it is really fast at what it does. My real question is, how do I look at what functionality the "regapi.dll" library has and how would I go about implementing this into AutoIt3? I've used people's examples of using "DllCall" but all those parameters and return values confuse the heck out of me. I tried editing the custom component set from the Object Browser in Microsoft Visual C# 2008 and adding "regapi.dll", but it gives me the following error: The following components could not be browsed: C:\WINDOWS\system32\regapi.dll
-
This is a function to create a registry checkpoint and to compare the checkpoint to the current registry. *** New AutoIt3 code using "reg export ..." and Windiff instead of "reg copy ..." and "reg compare ...": Note: I got Windiff from the Microsoft Support Tools for Windows XP. You will need a copy of the following to compile this script. These are all part of the Microsoft Support Tools for Windows XP. "gutils.dll" is a dependancy of Windiff. (script directory)\Windiff\Windiff.exe (script directory)\Windiff\gutils.dll (script directory)\Windiff\Windiff.hlp <-- This is optional #cs ---------------------------------------------------------------------------- AutoIt Version: 3.2.13.11 (beta) Author: Michael Sunwoo Script Function: Registry saving and comparing function #ce ---------------------------------------------------------------------------- ; Script Start #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <Constants.au3> Opt("GUIOnEventMode", 1) #Region ### START Koda GUI section ### Form= Local $formRegCompare = GUICreate("RegCompare", 381, 104) GUISetOnEvent($GUI_EVENT_CLOSE, "formRegCompareClose") Local $inputRegKey = GUICtrlCreateInput("HKCU\Software", 8, 8, 363, 21) Local $btnCreate = GUICtrlCreateButton("Create Registry Checkpoint", 8, 33, 177, 25, 0) GUICtrlSetOnEvent(-1, "btnCreateClick") Local $btnCompare = GUICtrlCreateButton("Compare Current to Checkpoint", 189, 33, 177, 25, 0) GUICtrlSetOnEvent(-1, "btnCompareClick") Local $lblLastDateTime = GUICtrlCreateLabel("Initialized.", 10, 62, 354, 38) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### Local $locSave = @MyDocumentsDir & "\" & StringTrimRight(@ScriptName, 4) & "\" Local $locWindiffDir = $locSave & "Windiff\" Local $locWindiff = $locWindiffDir & "Windiff.exe" DirCreate($locWindiffDir) FileInstall("Windiff\Windiff.exe", $locWindiffDir, 1) FileInstall("Windiff\Windiff.hlp", $locWindiffDir, 1) FileInstall("Windiff\gutils.dll", $locWindiffDir, 1) Local $regOld = $locSave & "RegOLD.txt" Local $regNew = $locSave & "RegNEW.txt" While 1 Sleep(10000) WEnd Func TimeStamp() Return @HOUR & ":" & @MIN & ":" & @SEC EndFunc Func DateStamp() Return @MON & "/" & @MDAY & "/" & @YEAR EndFunc Func btnCreateClick() Blah("Clicked: Compare Current to Checkpoint") RegCreateCheckpoint() EndFunc Func RegCreateCheckpoint() Blah(TimeStamp() & ": Starting registry backup . . .") If FileExists($regOld) Then FileDelete($regOld) EndIf ShellExecuteWait("reg.exe", 'export ' & GUICtrlRead($inputRegKey) & ' "' & $regOld & '"', "", "open", @SW_HIDE) Blah(TimeStamp() & ": Finished registry backup!") EndFunc Func btnCompareClick() Blah("Clicked: Button Compare to Current Checkpoint") RegCompareToCheckpoint() EndFunc Func RegCompareToCheckpoint() Local $i = 1 If FileExists($regOld) Then Blah("Starting registry export for comparison . . .") If FileExists($regNew) Then FileDelete($regNew) EndIf ShellExecuteWait("reg.exe", 'export ' & GUICtrlRead($inputRegKey) & ' "' & $regNew & '"', "", "open", @SW_HIDE) Blah(TimeStamp() & ': Finished registry export. Starting Windiff.' & @CRLF & 'F7/F8 = "View Prev/Next Change"') ShellExecute($locWindiff, '"' & $regOld & '" "' & $regNew & '"') Else MsgBox(16, StringTrimRight(@ScriptName, 4) & " error on line " & @ScriptLineNumber, "$regOld not found." & @CRLF & "$regOld = " & $regOld) EndIf EndFunc Func formRegCompareClose() Exit EndFunc Func Blah($text) ConsoleWrite($text & @CRLF) GUICtrlSetData($lblLastDateTime, $text) EndFunc Here are the batch file versions I originally created and based the above AutoIt3 version off of. RegSave.cmd: @echo off reg>nul query "hkcu\_BackUp_" 2>nul && ( echo Found old backup. Deleting it . . . reg>nul delete "hkcu\_BackUp_" /f ) echo. echo Starting registry backup . . . for /f "tokens=3 delims=\" %%a in ('reg.exe query hkcu\software') do ( if /i not "%%a"=="Microsoft" ( echo. echo Saving %%a . . . reg copy "hkcu\software\%%a" "hkcu\_Backup_\%%a" /s /f ) ) echo. echo Completed registry backup. RegCompare.cmd: @echo off for /f "tokens=3 delims=\" %%a in ('reg.exe query hkcu\software') do ( for /f "tokens=1,2* delims=:" %%b in ('reg compare "hkcu\_Backup_\%%a" "hkcu\software\%%a" /s 2^>nul') do ( if not "%%c"==" Identical" ( if not "%%b"=="The operation completed successfully" ( if not "%%b"=="Result Compared" ( if /i not "%%a"=="Microsoft" ( if "%%b"=="< Value" ( echo. echo OLD: %%c ) if "%%b"=="> Value" ( echo NEW: %%c ) if "%%b"=="< Key" ( echo. echo REMOVED: %%c ) if "%%b"=="> Key" ( echo. echo ADDED: %%c ) if not "%%b"=="> Value" if not "%%b"=="< Value" if not "%%b"=="< Key" if not "%%b"=="> Key" ( echo. echo %%a: %%b --^> %%c ) ) ) ) ) ) ) These skip the "Microsoft" key because there seems to be some type of Access Denied error on WinXP with one of the keys in there. Here some example output from RegCompare.cmd: Z:\>RegCompare.cmd OLD: HKEY_CURRENT_USER\_Backup_\Google preferred_language REG_SZ NEW: HKEY_CURRENT_USER\software\Google preferred_language REG_SZ en OLD: HKEY_CURRENT_USER\_Backup_\Google blt_count_slp REG_DWORD 0xeab38 NEW: HKEY_CURRENT_USER\software\Google blt_count_slp REG_DWORD 0xeabc8 OLD: HKEY_CURRENT_USER\_Backup_\Google blt_msec_slp REG_DWORD 0x17c64a NEW: HKEY_CURRENT_USER\software\Google blt_msec_slp REG_DWORD 0x17c69c OLD: HKEY_CURRENT_USER\_Backup_\Google dib_count_slp REG_DWORD 0x57aa6e NEW: HKEY_CURRENT_USER\software\Google dib_count_slp REG_DWORD 0x57aafe OLD: HKEY_CURRENT_USER\_Backup_\Google dib_msec_slp REG_DWORD 0x20e57 NEW: HKEY_CURRENT_USER\software\Google dib_msec_slp REG_DWORD 0x20e5b OLD: HKEY_CURRENT_USER\_Backup_\Google searches_integrated REG_DWORD 0x4f1 NEW: HKEY_CURRENT_USER\software\Google searches_integrated REG_DWORD 0x4f2 OLD: HKEY_CURRENT_USER\_Backup_\Google google_search REG_DWORD 0x505 NEW: HKEY_CURRENT_USER\software\Google google_search REG_DWORD 0x506 OLD: HKEY_CURRENT_USER\_Backup_\Google google_search_slp REG_DWORD 0x505 NEW: HKEY_CURRENT_USER\software\Google google_search_slp REG_DWORD 0x506 OLD: HKEY_CURRENT_USER\_Backup_\Panda Software InstallCLSID REG_SZ {F6B1ED50-1F91-46A6-A104-64B99145C1BC} NEW: HKEY_CURRENT_USER\software\Panda Software InstallCLSID REG_SZ {F6B1ED50-1F91-46A6-A104-64B99145C1BC} REMOVED: HKEY_CURRENT_USER\_Backup_\StudiosQA\Testing Key 1 ADDED: HKEY_CURRENT_USER\software\StudiosQA\Testing Key 2 Hope this helps someone
-
Found a workaround for WinXP: for /f "tokens=3 delims=\" %a in ('reg.exe query hkcu\software') do reg copy "hkcu\software\%a" "hkcu\_Backup\%a" /s /f Then: for /f "tokens=3 delims=\" %a in ('reg.exe query hkcu\software') do @reg compare "hkcu\software\%a" "hkcu\_Backup\%a" /s This shows that something in the Microsoft registry key is causing the Access Denied error message from the previous post. Also this completes and maybe can be parsed using AutoIt (although I'll need to clean this up a bit).
-
(Sorry for resurrecting an old thread again buuut...) I was playing around with the "reg" command and found the following pretty useful. The following copies hkcu\software to hkcu\_Backup. On my test machine it takes about 35 seconds to complete (much faster than my AutoIt3 based script I posted above which takes about 3.5 minutes). reg copy hkcu\software hkcu\_Backup /s The following compares hkcu\software to hkcu\_Backup. On my test machine this takes about 3 seconds to complete (much faster than my AutoIt3 based script I posted above). reg compare hkcu\software hkcu\_Backup /s The output of the reg compare can be piped to a text file or outputted as needed. I wonder if there is some function library that would give similar performance as reg.exe? Maybe some WMI thing? Investigating further... *** Edit *** This only seems to work in Vista. On XP, it says "Error: Access is denied." Uhh, anyone know why the error happens on XP and not on Vista? **********