47 #define INVALID_RUNCMD_RETURN -1 66 memset(&si, 0,
sizeof(si));
82 TRACE(
"Successfully ran command\n");
105 WARN(
"Return code: %u\n", dwWait);
140 DWORD i, cbMaxCmdLine = 0, cchMaxValue = 0;
145 TRACE(
"processing %ls entries under HKLM\n", szKeyName);
147 TRACE(
"processing %ls entries under HKCU\n", szKeyName);
150 L"Software\\Microsoft\\Windows\\CurrentVersion",
156 TRACE(
"RegOpenKeyW failed on Software\\Microsoft\\Windows\\CurrentVersion (%ld)\n",
res);
170 TRACE(
"Key doesn't exist - nothing to be done\n");
175 TRACE(
"RegOpenKeyExW failed on run key (%ld)\n",
res);
194 TRACE(
"Couldn't query key info (%ld)\n",
res);
201 TRACE(
"No commands to execute.\n");
210 if (szCmdLine ==
NULL)
212 TRACE(
"Couldn't allocate memory for the commands to be executed\n");
221 cchMaxValue *
sizeof(*szValue));
224 TRACE(
"Couldn't allocate memory for the value names\n");
233 DWORD cchValLength = cchMaxValue, cbDataLength = cbMaxCmdLine;
248 TRACE(
"Couldn't read in value %lu - %ld\n",
i,
res);
258 TRACE(
"Couldn't delete value - %lu, %ld. Running command anyways.\n",
i,
res);
263 TRACE(
"Incorrect type of value #%lu (%lu)\n",
i,
type);
277 if (szCmdLineExp ==
NULL)
279 TRACE(
"Couldn't allocate memory for the commands to be executed\n");
295 if (szCmdLineExp !=
NULL)
301 TRACE(
"Done processing cmd #%lu\n",
i);
308 if (szCmdLine !=
NULL)
329 TRACE(
"(%d)\n", nCSIDL_Folder);
334 if (!
SUCCEEDED(hResult) || cchPathLen == 0)
355 if (
wcscmp(FoundData.cFileName,
L".") == 0 ||
356 wcscmp(FoundData.cFileName,
L"..") == 0)
380 ExecInfo.
cbSize =
sizeof(ExecInfo);
438 TRACE(
"Operation done\n");
440 return res ? 0 : 101;
471 TRACE(
"dwWait: 0x%08lX\n", dwWait);
480 const DWORD dwWaitTotal = 3000;
BOOL DoFinishStartupItems(VOID)
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
HWND WINAPI GetShellWindow(VOID)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI GetExitCodeProcess(IN HANDLE hProcess, IN LPDWORD lpExitCode)
#define HKEY_CURRENT_USER
TW_UINT32 TW_UINT16 TW_UINT16 MSG
VOID TrayProcessMessages(IN OUT ITrayWindow *Tray)
DWORD WINAPI GetTickCount(VOID)
#define CSIDL_COMMON_STARTUP
#define ERROR_NOT_ENOUGH_MEMORY
#define INVALID_HANDLE_VALUE
DWORD WINAPI GetLastError(VOID)
#define REG_OPENED_EXISTING_KEY
INT ProcessStartupItems(VOID)
static BOOL ProcessRunKeys(HKEY hkRoot, LPCWSTR szKeyName, BOOL bDelete, BOOL bSynchronous)
BOOL WINAPI GetBinaryTypeW(LPCWSTR lpApplicationName, LPDWORD lpBinaryType)
STRSAFEAPI StringCbCatW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
BOOL DoStartStartupItems(ITrayWindow *Tray)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
LONG WINAPI RegCloseKey(HKEY hKey)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
static BOOL AutoStartupApplications(INT nCSIDL_Folder)
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
#define STARTF_USESHOWWINDOW
#define ERROR_FILE_NOT_FOUND
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)
HRESULT WINAPI SHCreateSessionKey(REGSAM samDesired, PHKEY phKey)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
int WINAPI GetSystemMetrics(_In_ int)
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
BOOL WINAPI DECLSPEC_HOTPATCH ReleaseMutex(IN HANDLE hMutex)
DWORD WINAPI MsgWaitForMultipleObjects(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ BOOL fWaitAll, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask)
#define INVALID_RUNCMD_RETURN
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
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
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
static HANDLE s_hStartupMutex
BOOL WINAPI SetCurrentDirectoryW(IN LPCWSTR lpPathName)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexW(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL, IN BOOL bInitialOwner, IN LPCWSTR lpName OPTIONAL)
#define FILE_ATTRIBUTE_HIDDEN
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
HRESULT WINAPI SHGetFolderPathW(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
GLuint GLuint GLsizei GLenum type
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
#define REG_OPTION_VOLATILE
DWORD WINAPI SHRestricted(RESTRICTIONS policy)
static int runCmd(LPWSTR cmdline, LPCWSTR dir, BOOL wait, BOOL minimized)
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define HeapFree(x, y, z)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
#define HKEY_LOCAL_MACHINE
BOOL WINAPI FindClose(HANDLE hFindFile)