Looking a bit more into the lstrcpyW and lstrcatW situation, the
reason it appears to be done is because if you add the slash directly
to PathUninstallW, then for some reason, the uninstaller shows no
entries, even when there are some.

Part of the reason I duplicated code in the original patch is because
if the uninstaller runs that function (or the one you mentioned)
twice, then the entries are listed not in alphabetical order.  You
will have a-z for current user and then below that a-z for local
machine.  This way keeps it to one a-z for both cu and lm.

Tom

P.S. Windows displays duplicate names as 2 separate entries.

On 4/18/07, Tom Spear <[EMAIL PROTECTED]> wrote:
On 4/18/07, Detlef Riekenberg <[EMAIL PROTECTED]> wrote:
> On Mo, 2007-04-16 at 16:44 -0500, Tom Spear wrote:
> > I took lines 196-197 and duplicated that,
> > changing HKEY_LOCAL_MACHINE to HKEY_CURRENT_USER, and
> >
>
> You can move most of the code from FetchUninstallInformation()
> to a seperate function and use the rootkey as Parameter.
>
> get_uninstallinfo_from_reg(HKEY_LOCAL_MACHINE);
> get_uninstallinfo_from_reg(HKEY_CURRENT_USER);
>

I ended up creating a new patch that does something similar, while
keeping the FetchUninstallInformation function

> Did you already checked, what windows does with
> duplicate Programm names?

No, but I will do that in just a minute.

> More hints:
>
>     lstrcpyW(key_app, PathUninstallW);
>     lstrcatW(key_app, BackSlashW);
>     p = key_app+lstrlenW(PathUninstallW)+1;
>
> Why not add the slash direct to PathUninstallW?

This was already part of the code that I copied.  Why the original
author of this code did this, I have no clue and was wondering about
that as well.

>     sizeOfSubKeyName = 255;
>
> Fixed numbers are not a good Idea (error-prone).
> This value is related to "WCHAR subKeyName[256];",
> but RegEnumKeyEx expect the max. size in TCHAR, including the
> terminating zero, so the correct value for sizeOfSubKeyName
> is 256.
>
> A nice, automatic way is:
>
>  sizeOfSubKeyName = sizeof(subKeyName)/sizeof(subKeyName[0]);
>
> Such a construct works independant from the type (WCHAR / CHAR)
> and the length of the String.

See above

> All together looks like more than one Patch.
>
> --
>
> By by ... Detlef

Like I said, I ended up rewriting the patch, and in so doing, created
a fairly large patch, because most of the functions had to be
rewritten to support an array being passed as a parameter.  The 2nd
patch actually will have to be changed a little more as well because I
didn't document anything, however I submitted it here for suggestions
so I could have a rough base to work with.

--
Thanks

Tom

Check out this new 3D Instant Messenger called IMVU.  It's the best I
have seen yet!



http://imvu.com/catalog/web_invitation.php?userId=1547373&from=power-email



--
Thanks

Tom

Check out this new 3D Instant Messenger called IMVU.  It's the best I
have seen yet!



http://imvu.com/catalog/web_invitation.php?userId=1547373&from=power-email


Reply via email to