12#define WIN32_NO_STATUS
29#define MAX_VALUE_NAME 16383
36#define RUNDLL(param) \
37 ((INT_PTR)ShellExecuteW(NULL, L"open", L"rundll32.exe", (param), NULL, SW_SHOWDEFAULT) > 32)
38#define ShellExec(file, params) \
39 ((INT_PTR)ShellExecuteW(NULL, NULL, (file), (params), NULL, SW_SHOWDEFAULT) > 32)
48 if (*Arg ==
'/' || *Arg ==
'-')
61 IOpenControlPanel *pOCP;
63 &IID_IOpenControlPanel, (
void**)&pOCP);
67 IOpenControlPanel_Release(pOCP);
84 StringCbCopyW(szParameters,
sizeof(szParameters),
L"/n,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}");
85 StringCbCatW(szParameters,
sizeof(szParameters), lpFolderCLSID);
103 return RUNDLL(szParameters);
141 if (*lpCmdLine == 0 || !
_wcsicmp(lpCmdLine,
L"panel"))
145 if (!
_wcsicmp(lpCmdLine,
L"sticpl.cpl")) lpCmdLine = (
LPWSTR)
L"scannercamera";
152 else if (!
_wcsicmp(lpCmdLine,
L"folders"))
return RUNDLL(
L"shell32.dll,Options_RunDLL");
166 else if (!
_wcsicmp(lpCmdLine,
L"userpasswords2"))
return RUNDLL(
L"netplwiz.dll,UsersRunDll");
179 pszPage =
argv[argi + 3];
192 L"Software\\Microsoft\\Windows\\CurrentVersion\\Control Panel\\Cpls",
199 for (dwIndex = 0; ; ++dwIndex)
219 if (!
_wcsicmp(lpCmdLine, szValueName))
228 dwDataSize + 2 *
sizeof(
WCHAR));
245 if (*pszData !=
L'\"')
247 *(--pszData) =
L'\"';
248 pszData[dwDataSize /
sizeof(
WCHAR)] =
L'\"';
249 pszData[(dwDataSize /
sizeof(
WCHAR)) + 1] = 0;
static BOOL OpenUserAccounts(VOID)
static BOOL IsSwitch(LPCWSTR Switch, LPCWSTR Arg)
static HRESULT OpenControlPanelItem(LPCWSTR Name, LPCWSTR Page)
static INT OpenShellFolder(LPWSTR lpFolderCLSID)
#define ShellExec(file, params)
static INT RunControlPanel(LPCWSTR lpCmd)
INT WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, INT nCmdShow)
VOID WINAPI Control_RunDLLW(HWND hWnd, HINSTANCE hInst, LPCWSTR cmd, DWORD nCmdShow)
#define RegCloseKey(hKey)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
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)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
#define HeapFree(x, y, z)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
BOOL WINAPI PathFileExistsW(const WCHAR *path)
_ACRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
BOOL WINAPI IsOS(DWORD feature)
WCHAR **WINAPI CommandLineToArgvW(const WCHAR *cmdline, int *numargs)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
_In_ PVOID _Out_opt_ BOOLEAN _Out_opt_ PPFN_NUMBER Page
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCbCatW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
#define HKEY_LOCAL_MACHINE