Author: janderwald Date: Fri Nov 10 14:16:38 2006 New Revision: 24711
URL: http://svn.reactos.org/svn/reactos?rev=24711&view=rev Log: - implement a GuiRunOnce section for unatttended setup - with this we launch programs after 3rd boot (programs / scripts) - another a little step for sysreg :)
Modified: trunk/reactos/dll/win32/syssetup/wizard.c
Modified: trunk/reactos/dll/win32/syssetup/wizard.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/syssetup/wizard.c... ============================================================================== --- trunk/reactos/dll/win32/syssetup/wizard.c (original) +++ trunk/reactos/dll/win32/syssetup/wizard.c Fri Nov 10 14:16:38 2006 @@ -1907,7 +1907,7 @@ { INFCONTEXT InfContext; TCHAR szName[256]; - TCHAR szValue[256]; + TCHAR szValue[MAX_PATH]; DWORD LineLength;
if (!SetupFindFirstLine(hUnattendedInf, @@ -2006,6 +2006,57 @@ } while (SetupFindNextLine(&InfContext, &InfContext));
+ + if (SetupFindFirstLine(hUnattendedInf, + _T("GuiRunOnce"), + NULL, + &InfContext)) + { + HKEY hKey; + int i; + + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, + _T("SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce"), + 0, + KEY_SET_VALUE, + &hKey) != ERROR_SUCCESS) + { + DPRINT1("Error: failed to open HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce\n"); + return TRUE; + } + + i = 0; + + do + { + if(SetupGetStringField(&InfContext, + 0, + szValue, + sizeof(szValue) / sizeof(TCHAR), + NULL)) + { + TCHAR szPath[MAX_PATH]; + _stprintf(szName, _T("%d"), i); + DPRINT("szName %S szValue %S\n", szName, szValue); + + if (ExpandEnvironmentStrings(szValue, szPath, MAX_PATH)) + { + DPRINT("value %S\n", szPath); + if (RegSetValueEx(hKey, + szName, + 0, + REG_SZ, + (const BYTE*)szPath, + _tcslen(szPath) * sizeof(TCHAR)) == ERROR_SUCCESS) + { + i++; + } + } + } + }while(SetupFindNextLine(&InfContext, &InfContext)); + + RegCloseKey(hKey); + } return TRUE; }