Question: if you are a "Guru",then why exactly are you seeking solutions from this forum?
Also from this statement,it seems you are in an "Enterprise" programming group.
"I'm under a few NDAs (Non-Disclosure Agreements) and can't really "say" what is what, but I can "mock" the situation to give you a clue."
So you would seem to want to "HIRE" a programmer to assist in this "Task",right?
Well, let me elaborate on this, a while back (late 90's) came along a version of Windows called 98 (everyone remembers it, mostly), and the annoying part was "scanreg /restore" wouldn't undo crashes and backup software, well, what was that? So, for the most part you *could* repair Windows with the disc(s) you had for it *IF* you hadn't ever installed that annoyingly EVIL "Dot Net" (and that same thing applied all the way to XP). So, to avoid my "fun" of having to reinstall all those programs after all the 1001 updates on DIALUP (yes, did say that), I broke into the cabs, got the Copy data for the installation of Windows out of it, went ahead and dumped the registry to a reg file and proceeded to write the program to rip out everything that was "Windows" from the registry (that I could notice, back then MS had very little in programming stuff and the Internet, well, was less so forthcoming on real answers, much like today). Then it created a restore package which I could run after reinstalling Windows (a fresh copy, because of the "fantastic Dot Net"ness) and return everything back to the way it was before the refreshed OS install. It worked great for 98, so I'd been talking to a friend who worked at some facility that was doing trials and such and they have computers in a room (back then they were 98's, went to XP and so forth), doing some testing on software made for them by someone else, but the problem was, people would when they were done, mess around with the computers, typically doing things like uninstalling software, deleting shortcuts, that sort of thing. System Restore wasn't possible back then (that was later added in Millenium with a fail of it's own), no clue if they ever used any ME version machines, sold one ME machine with multiple 98's prior to it, then XPs, 7's and now 10's.
Anyhow, my friend there told them that he'd heard I'd made a program to put software back to the way it was post a problem with the system, well, apparently, that got them interested and he called me, told me to call a number (forget it now, that was a few years back) and I did. I had to make the code do more than I did, because it had to form to their needs, so after a few months of hard coding, I got something that worked. Now, not 100% sure, but I *may* have a ghost backup of that era around somewhere (2000 version), I haven't gone totally digging.
As for being in an "Enterprise" programming group, err, 2 words, "Hell NO!" Something about frying my brain coding 24/7, err, pass. The NDAs I had to sign were for legal purposes on their end to prove to whoever they were doing trials for that "I wouldn't say 'anything' about the testing". Actually was never there to *see* any testing, just a room with computers in it through a small window on a metal fire door.
My hopes (and it was a streeeeetch, as I hate working with the registry on this gritty level, worst ever design for storing data), was someone who may have run into registering a library or any type of object into the registry manually (and not letting the installer do it). I recall there were programs from long ago that would register items for you if you "asked" the program to, like "install this object" or "add toolbar to menu", etc.
Hi Guru,
Check Running a 32-bit App on WOW64 can be weird, it might be relevant for you.
I've been through the Wow64 stuff MS offers and, well, I'm certainly not Wowed. Redirected & Reflected (means "copied to both places"), why didn't they say that? TypeLibs and Interfaces are copied to both 64 and 32 bit versions while straight Classes are always 64 bit, CLSIDs are 32 or 64, but never both (this part is independant), APPIDs are the same as CLSIDS. I am not worried about running my apps at all on a 64 bit system, it's just that I need to ensure that when my program restores their software, it puts all those pesky registry entries where they belong. I'm going to do more testing as it failed to do it right again (but this time IE didn't get trashed, apparently my test copied the HTML Class info for IE and it ruined it).
Best of luck there Guru but I doubt you will find anyone with much interest as its a tedious task at best with little to gain from it unless they have the same problem that you have. I gather from what you have written that the earlier data is not even backed up so youu cannot go back to scratch to fix it. Personally I avoid the registry like the plague and only produce portable apps that don't use the registry at all.
Thanks Hutch, I was hoping on I guess a bit of a whim that someone may have delved deep and dark into the mess Microsoft calls the Registry.
I understand that your program do something like "shadowuser" or "deepfreeze" programs, so, your program restore windows to previous point.
But I don't understand where you need help sir GuruSR, can you be more specific?
In a nutshell, run program on a machine without any software, collect the file information (basically a DIR of the entire drive root drive), then with the preset exclusions of the registry "back it up and the non-windows files" after you've installed software. Then on the flip side, you run it with the restoration and it puts the registry parts back (manually, thanks to keys not being properly written to during my original testing years ago), copies the files that don't exist in the default windows system & user areas and exits. My issue is it's doing it, but in Windows 7, a ton of new registry entries were added (can you say bloat?) and last thing I wanted to do was to corrupt Windows with me putting stuff back that could cause problems with updates and such, which it currently was doing until I started limiting registry sections (maybe limited too many). The installer/uninstaller sections are scanned for the keyword MS uses to denote an Update (scan the internet for that one, it's not told anywhere, <SARCASM>love their MSDN</SARCASM>).
Personally I avoid the registry like the plague and only produce portable apps that don't use the registry at all.
The voice of wisdom! But some people are unfortunately forced to deal with the registry mess. If the advice is applicable to OP, he might consider just getting rid of registry entries. Instead store user data in a file, in his own format, as I (and presumably you) do. However there's probably too much code to change.
I normally avoid them too, write my own data type out into a proper user account location, just wish this was that simple...
GURUSR,
You can't possibly be writing all this code in MASM assembly language,...(I mean, you could, but, you'd already be toast)
I thought that your original post described an interesting project,...conceptually,...but, in real, cyber-life,...I'm fairly certain that actually writing the source code to accommodate all possible scenarios will surely induce some bizarre type of terminal, degenerative mental dysfunction.
...But, if what you stated above is true,...you should definitely be getting hazard pay,...and, diplomatic immunity,...and, at the very least,...all the Sports Illustrated Swimsuit Models you can handle,...
...The level of complexity that you are describing, is causing my nose and ears to bleed,...
...But,...hey,...send me a Non-Disclosure Agreement,...I could really use a near-death experience to brighten up my day,...
If it were me,...I'd be creating a number of different COMPLETE Registry Databases, instead of trying to filter the clusters of registry keys (associated with the current software update),...Although, I'll bet that whatever 32-bit or 64-bit Windows Operating System Version running on an individual computer that you will re-configure with your NDA-enabled 'revert' software won't like it at all,...
Thanks Zen, these past 2 months+, that I've been working on this, has been "run the test", "didn't work, WTH!", use my logging library, pop in TONS of logging, last time I saw the log it was 128MB, going to sift through that later, possibly see if I can register one of the libraries it's complaining about with RegShot running before and after, see if I'm missing something and see what changed, so I can track down if the package I made is missing it or if it's actually not in the test. I have 1 PC with 2 copies of Windows backups, 1 with and 1 without the software I put in (basically a test), problem was, I had to find some heavily involved software, so installed (SWTOR) an online game (never ran it), backed the machine up, made the package with the machine after the install, restored the empty backup and ran my program to restore the software... The game says libraries are missing, etc, I did install EditPad Lite, but since it uses an ini file, it works fine, so I could read the log file with ease and to ensure the Uninstall has it, because the SWTOR didn't seem to have one. As for creating different databases, love to, but the problem with that is, they'd be restored on a variety of machines, hardware wouldn't be 100% the same, so there's issues with video cards, sound cards, etc, that would go poof, if I put data back in the wrong places. Heck, the first time I tried to get the Windows 7 to boot after putting the first test in, gave me a black screen with a mouse pointer, never got to the login screen in or out of Safe Mode!
VirtualPC or XP mode?
VM mode, can't say Real Mode, since I'm not writing a kernel driver. Looked at doing that once, then shuddered at the insanity. I'm not interested in going that crazy at writing kernel drivers.
GuruSR.