30#define CMP_MAGIC 0x01234567
52 WARN(
"RegQueryValueEx(%s) failed with error %lu\n",
debugstr_w(pszKey), rc);
57 WARN(
"Wrong registry data type (%u vs %u)\n", dwType,
REG_SZ);
69 WARN(
"RegQueryValueEx(%s) failed with error %lu\n",
debugstr_w(pszKey), rc);
96 WARN(
"RegOpenKeyEx() failed with error %lu\n", rc);
100 rc =
ReadRegSzKey(ControlKey,
L"SystemStartOptions", &SystemStartOptions);
103 WARN(
"ReadRegSzKey() failed with error %lu\n", rc);
108 CurrentOption = SystemStartOptions;
109 while (CurrentOption)
114 if (
_wcsicmp(CurrentOption,
L"CONSOLE") == 0)
116 TRACE(
"Found 'CONSOLE' boot option\n");
124 if (ControlKey !=
NULL)
128 TRACE(
"IsConsoleShell() returning %u\n",
ret);
143 rc =
RegOpenKeyExW(hRootKey,
L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",
147 WARN(
"RegOpenKeyEx() failed with error %lu\n", rc);
153 ConsoleShell ?
L"ConsoleShell" :
L"Shell",
162 WARN(
"RegQueryValueEx() failed with error %lu\n", rc);
239 L"SYSTEM\\CurrentControlSet\\Control\\SafeBoot\\Option",
256 L"SYSTEM\\CurrentControlSet\\Control\\SafeBoot",
274 TRACE(
"Alternate shell started (Safe Mode)\n");
280 WARN(
"Wrong type %lu (expected %u or %u)\n",
286 WARN(
"Alternate shell in Safe Mode required but not specified.\n");
301 TRACE(
"Started shell from HKEY_CURRENT_USER\n");
308 TRACE(
"Started shell from HKEY_LOCAL_MACHINE\n");
358 L"InactiveTitleText",
364 L"ButtonAlternateFace",
366 L"GradientActiveTitle",
367 L"GradientInactiveTitle",
398 WARN(
"RegOpenKeyEx() failed with error %lu\n", rc);
404 Size =
sizeof(szColor);
414 WARN(
"RegQueryValueEx(%s) failed with error %lu\n",
434 WARN(
"RegOpenKeyEx() failed with error %lu\n", rc);
438 Size =
sizeof(szWallpaper);
458 TRACE(
"No wallpaper set in registry (error %lu)\n", rc);
490 WARN(
"GetProcAddress() failed\n");
527 &
tp.Privileges[0].Luid);
530 tp.PrivilegeCount = 1;
583 WARN(
"CreateEnvironmentBlock() failed, fall back to default (error %lu)\n",
DWORD WINAPI UpdatePerUserSystemParameters(DWORD dw1, DWORD dw2)
#define RC_STRING_MAX_SIZE
#define IDS_INSTALLER_FAIL
#define RegCloseKey(hKey)
CONFIGRET WINAPI CMP_Report_LogOn(_In_ DWORD dwMagic, _In_ DWORD dwProcessId)
#define ERROR_NOT_ENOUGH_MEMORY
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
BOOL WINAPI LookupPrivilegeValueW(LPCWSTR lpSystemName, LPCWSTR lpPrivilegeName, PLUID lpLuid)
BOOL WINAPI AdjustTokenPrivileges(HANDLE TokenHandle, BOOL DisableAllPrivileges, PTOKEN_PRIVILEGES NewState, DWORD BufferLength, PTOKEN_PRIVILEGES PreviousState, PDWORD ReturnLength)
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
#define GetProcAddress(x, y)
#define GetCurrentProcess()
#define HeapFree(x, y, z)
static void cleanup(void)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
UINT WINAPI GetSystemWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
_ACRTIMP __msvcrt_ulong __cdecl wcstoul(const wchar_t *, wchar_t **, int)
_ACRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *)
static const WCHAR WorkingDir[]
BOOL WINAPI DestroyEnvironmentBlock(IN LPVOID lpEnvironment)
BOOL WINAPI CreateEnvironmentBlock(OUT LPVOID *lpEnvironment, IN HANDLE hToken, IN BOOL bInherit)
BOOL WINAPI GetUserProfileDirectoryW(_In_ HANDLE hToken, _Out_opt_ LPWSTR lpProfileDir, _Inout_ LPDWORD lpcchSize)
_In_ uint64_t _In_ uint64_t _In_ uint64_t _In_opt_ traverse_ptr * tp
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
VOID RunLiveCD(PSTATE pState)
WCHAR Installer[MAX_PATH]
static char * NextOption(const char *const ostr)
#define ERROR_FILE_NOT_FOUND
static PROCESS_INFORMATION pi
_In_opt_ _In_opt_ _In_ _In_ DWORD cbData
#define REGSTR_PATH_DESKTOP
#define REGSTR_PATH_CURRENT_CONTROL_SET
#define REGSTR_PATH_COLORS
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
static BOOL IsMiniNT(VOID)
Check whether we are running in MiniNT mode (e.g. live medium).
static BOOL GetShell(OUT WCHAR *CommandLine, IN HKEY hRootKey)
static VOID SetUserSettings(VOID)
static BOOL EnablePrivilege(LPCWSTR lpszPrivilegeName, BOOL bEnablePrivilege)
DWORD(WINAPI * PCMP_REPORT_LOGON)(DWORD, DWORD)
static BOOL StartInstaller(VOID)
static BOOL StartShell(_In_opt_ PVOID pEnvironment)
static VOID NotifyLogon(VOID)
const WCHAR g_RegColorNames[][32]
static VOID SetUserWallpaper(VOID)
static BOOL IsConsoleShell(VOID)
LONG ReadRegSzKey(IN HKEY hKey, IN LPCWSTR pszKey, OUT LPWSTR *pValue)
static VOID SetUserSysColors(VOID)
int WINAPI wWinMain(IN HINSTANCE hInst, IN HINSTANCE hPrevInstance, IN LPWSTR lpszCmdLine, IN int nCmdShow)
static COLORREF StrToColorref(IN LPWSTR lpszCol)
static BOOL StartProcess(_In_ PCWSTR CommandLine, _In_opt_ PVOID pEnvironment)
static int Shell(const char **args)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
#define NORMAL_PRIORITY_CLASS
DWORD WINAPI GetLastError(void)
#define STARTF_USESHOWWINDOW
#define CREATE_UNICODE_ENVIRONMENT
DWORD WINAPI GetCurrentProcessId(void)
_In_ ULONG _In_ ULONG rgb
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
#define SPI_SETDESKWALLPAPER
BOOL WINAPI SetSysColors(_In_ int cElements, _In_reads_(cElements) CONST INT *lpaElements, _In_reads_(cElements) CONST COLORREF *lpaRgbValues)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
BOOL WINAPI ExitWindowsEx(_In_ UINT, _In_ DWORD)
#define TOKEN_ADJUST_PRIVILEGES
#define SE_PRIVILEGE_ENABLED