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);
97 WARN(
"RegOpenKeyEx() failed with error %lu\n", rc);
101 rc =
ReadRegSzKey(ControlKey,
L"SystemStartOptions", &SystemStartOptions);
104 WARN(
"ReadRegSzKey() failed with error %lu\n", rc);
109 CurrentOption = SystemStartOptions;
110 while (CurrentOption)
115 if (
_wcsicmp(CurrentOption,
L"CONSOLE") == 0)
117 TRACE(
"Found 'CONSOLE' boot option\n");
125 if (ControlKey !=
NULL)
129 TRACE(
"IsConsoleShell() returning %u\n",
ret);
144 rc =
RegOpenKeyExW(hRootKey,
L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",
148 WARN(
"RegOpenKeyEx() failed with error %lu\n", rc);
154 ConsoleShell ?
L"ConsoleShell" :
L"Shell",
163 WARN(
"RegQueryValueEx() failed with error %lu\n", rc);
230 L"SYSTEM\\CurrentControlSet\\Control\\SafeBoot\\Option",
247 L"SYSTEM\\CurrentControlSet\\Control\\SafeBoot",
265 TRACE(
"Alternate shell started (Safe Mode)\n");
271 WARN(
"Wrong type %lu (expected %u or %u)\n",
277 WARN(
"Alternate shell in Safe Mode required but not specified.\n");
292 TRACE(
"Started shell from HKEY_CURRENT_USER\n");
299 TRACE(
"Started shell from HKEY_LOCAL_MACHINE\n");
349 L"InactiveTitleText",
355 L"ButtonAlternateFace",
357 L"GradientActiveTitle",
358 L"GradientInactiveTitle",
389 WARN(
"RegOpenKeyEx() failed with error %lu\n", rc);
395 Size =
sizeof(szColor);
405 WARN(
"RegQueryValueEx(%s) failed with error %lu\n",
425 WARN(
"RegOpenKeyEx() failed with error %lu\n", rc);
429 Size =
sizeof(szWallpaper);
449 TRACE(
"No wallpaper set in registry (error %lu)\n", rc);
481 WARN(
"GetProcAddress() failed\n");
497 SIZE_T cchInstallerNameLen;
501 cchInstallerNameLen =
wcslen(lpInstallerName);
502 if (PathSize < cchInstallerNameLen)
584 WARN(
"Couldn't find the installer '%s', trying alternative.\n",
debugstr_w(lpInstallerPath));
605 ERR(
"Couldn't find the installer '%s'\n",
debugstr_w(lpInstallerPath));
624 ERR(
"Failed to start the installer '%s'\n",
debugstr_w(Installer));
645 &
tp.Privileges[0].Luid);
648 tp.PrivilegeCount = 1;
701 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)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
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)
VOID WINAPI GetSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
_ACRTIMP __msvcrt_ulong __cdecl wcstoul(const wchar_t *, wchar_t **, int)
_ACRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
BOOL WINAPI DestroyEnvironmentBlock(IN LPVOID lpEnvironment)
BOOL WINAPI CreateEnvironmentBlock(OUT LPVOID *lpEnvironment, IN HANDLE hToken, IN BOOL bInherit)
_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)
static char * NextOption(const char *const ostr)
#define ERROR_FILE_NOT_FOUND
static PROCESS_INFORMATION pi
#define PROCESSOR_ARCHITECTURE_IA64
#define PROCESSOR_ARCHITECTURE_ALPHA64
#define PROCESSOR_ARCHITECTURE_ALPHA
#define PROCESSOR_ARCHITECTURE_ARM
#define PROCESSOR_ARCHITECTURE_UNKNOWN
#define PROCESSOR_ARCHITECTURE_SHX
#define PROCESSOR_ARCHITECTURE_MIPS
#define PROCESSOR_ARCHITECTURE_PPC
#define PROCESSOR_ARCHITECTURE_AMD64
#define PROCESSOR_ARCHITECTURE_INTEL
#define FILE_ATTRIBUTE_DIRECTORY
_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)
WORD wProcessorArchitecture
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 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)
static BOOL StartInstaller(IN LPCWSTR lpInstallerName)
int WINAPI wWinMain(IN HINSTANCE hInst, IN HINSTANCE hPrevInstance, IN LPWSTR lpszCmdLine, IN int nCmdShow)
static COLORREF StrToColorref(IN LPWSTR lpszCol)
BOOL ExpandInstallerPath(IN LPCWSTR lpInstallerName, OUT LPWSTR lpInstallerPath, IN SIZE_T PathSize)
static BOOL StartProcess(_In_ PCWSTR CommandLine, _In_opt_ PVOID pEnvironment)
#define INVALID_FILE_ATTRIBUTES
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