SetShellVarContext all - was failing to fall back to current user

Optimised this a little too


git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@695 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
eccles 2002-08-19 23:39:23 +00:00
parent 34db30b2ce
commit 8cc405362f

View file

@ -328,21 +328,25 @@ void NSISCALL myRegGetStr(HKEY root, const char *sub, const char *name, char *ou
char g_all_user_var_flag;
static void NSISCALL queryShellFolders(const char *name, char *out)
static void NSISCALL queryShellFolders(const char *name_, char *out)
{
char f=g_all_user_var_flag;
again:
myRegGetStr(g_all_user_var_flag?HKEY_LOCAL_MACHINE:HKEY_CURRENT_USER,
"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",
name+(f?0:7),out);
if (!out[0])
static char name[20] = "Common ";
mystrcpy(name + 7, name_);
{
if (f)
char f=g_all_user_var_flag;
again:
myRegGetStr(f?HKEY_LOCAL_MACHINE:HKEY_CURRENT_USER,
"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",
name+(f?0:7),out);
if (!out[0])
{
f=0; goto again;
if (f)
{
f=0; goto again;
}
GetTempPath(NSIS_MAX_STRLEN,out);
}
GetTempPath(NSIS_MAX_STRLEN,out);
}
}
@ -497,17 +501,17 @@ void NSISCALL process_string(char *out, const char *in)
case VAR_CODES_START + 29: // STARTMENU
{
static const char *tab[]={
"Common Programs",
"Common Startup",
"Common Desktop",
"Common Start Menu"
"Programs",
"Startup",
"Desktop",
"Start Menu"
};
queryShellFolders(tab[nVarIdx-(VAR_CODES_START+26)], out);
}
break;
case VAR_CODES_START + 30: // QUICKLAUNCH
queryShellFolders("Common AppData", out);
queryShellFolders("AppData", out);
lstrcat(out, "\\Microsoft\\Internet Explorer\\Quick Launch");
f = GetFileAttributes(out);
if (f != (DWORD)-1 && (f & FILE_ATTRIBUTE_DIRECTORY))