25 #define NAME_COLUMN_WIDTH 250 26 #define SUB_COLUMN_WIDTH 250 27 #define MAX_STRING 120 30 #define _countof(array) (sizeof(array) / sizeof(array[0])) 65 L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes";
109 static const WCHAR Spaces[] =
L" \t\r\n";
110 size_t i =
str.find_first_not_of(Spaces);
111 size_t j =
str.find_last_not_of(Spaces);
266 DWORD cbName, cbValue;
267 for (
DWORD dwIndex = 0; ; ++dwIndex)
270 cbValue =
sizeof(szValue);
296 Items.push_back(
Item);
389 Item.pszText = const_cast<LPWSTR>(it->c_str());
564 Item.pszText = const_cast<LPWSTR>(it->c_str());
614 INT i, iCharSet1, iCharSet2;
615 BYTE CharSet1, CharSet2;
624 if (
key.empty() ||
key == sz)
737 DWORD cbName, cbValue;
741 cbValue =
sizeof(szValue);
773 return const_cast<LPWSTR>(
pch);
874 case L'a': Ret +=
L'\a'; ++
i;
break;
875 case L'b': Ret +=
L'\b'; ++
i;
break;
876 case L'f': Ret +=
L'\f'; ++
i;
break;
877 case L'n': Ret +=
L'\n'; ++
i;
break;
878 case L'r': Ret +=
L'\r'; ++
i;
break;
879 case L't': Ret +=
L'\t'; ++
i;
break;
880 case L'v': Ret +=
L'\v'; ++
i;
break;
905 while (
i <
str.size())
928 pchStart += cbHeader /
sizeof(
WCHAR);
981 Items.push_back(
Item);
1007 if (
dwSize != 0xFFFFFFFF)
1009 std::vector<BYTE> Contents(
dwSize + 2);
1015 if (
memcmp(&Contents[0],
"\xFF\xFE", 2) == 0)
1033 for (
size_t i = 0;
i <
str.size(); ++
i)
1037 case L'"':
case L'\\':
1090 Name.c_str(), szCharSet1,
1116 if (*pszFilter ==
L'|')
1203 static const WCHAR s_szRegeditKey[] =
1204 L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit";
1248 Params.lpszText = szAbout;
1312 RECT rcItem, rcSubItem, rcText;
1317 rcItem = lpDrawItem->
rcItem;
1389 switch (pnmhdr->
code)
1425 if (hSubMenu ==
NULL)
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
#define OFN_FILEMUSTEXIST
std::vector< ITEM > ITEMVECTOR
#define ListView_EnsureVisible(hwndLV, i, fPartialOK)
#define ListView_SetColumn(hwnd, iCol, pcol)
#define TranslateAccelerator
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
#define ListView_GetNextItem(hwnd, i, flags)
static const WCHAR szName[]
void UnescapeChar(const STRING &str, size_t &i, STRING &Ret)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
void MainWnd_OnExport(HWND hwnd)
UINT WINAPI GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount)
LRESULT MainWnd_OnNotify(HWND hwnd, int idFrom, NMHDR *pnmhdr)
WCHAR g_szSubstituteHead[MAX_STRING]
bool ItemCompareByNameDescend(const ITEM &Item1, const ITEM &Item2)
STRING Escape(const STRING &str)
BOOL WINAPI LookupPrivilegeValueW(LPCWSTR lpSystemName, LPCWSTR lpPrivilegeName, PLUID lpLuid)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
bool ItemCompareBySubDescend(const ITEM &Item1, const ITEM &Item2)
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
#define EASTEUROPE_CHARSET
const WCHAR g_LongestName[]
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL EditDlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
void MainWnd_OnAbout(HWND hwnd)
#define CB_SETHORIZONTALEXTENT
int WINAPI EnumFontFamiliesExW(_In_ HDC, _In_ PLOGFONTW, _In_ FONTENUMPROCW, _In_ LPARAM, _In_ DWORD)
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
_STLP_MOVE_TO_STD_NAMESPACE void sort(_RandomAccessIter __first, _RandomAccessIter __last)
#define HKEY_CURRENT_USER
_Check_return_ _CRTIMP int __cdecl _wtoi(_In_z_ const wchar_t *_Str)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
INT_PTR CALLBACK AddDlg_DlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
void UnescapeHex(const STRING &str, size_t &i, STRING &Ret, BOOL Unicode)
#define CHINESEBIG5_CHARSET
BOOL WINAPI UpdateWindow(_In_ HWND)
#define LVS_EX_FULLROWSELECT
#define ListView_GetItemRect(hwnd, i, prc, code)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
#define INVALID_HANDLE_VALUE
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
GLint GLint GLint GLint GLint x
HWND WINAPI SetFocus(_In_opt_ HWND)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
void MainWnd_OnDestroy(HWND hwnd)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
_In_ HFONT _Out_ PUINT Height
_Check_return_ unsigned long __cdecl wcstoul(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
#define ListView_InsertItem(hwnd, pitem)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
INT WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, INT nCmdShow)
bool ItemCompareByNameAscend(const ITEM &Item1, const ITEM &Item2)
static void trim(STRING &str)
BOOL WINAPI DestroyWindow(_In_ HWND)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
DWORD WINAPI GetSysColor(_In_ int)
BOOL AddDlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
void MainWnd_OnActivate(HWND hwnd, UINT state, HWND hwndActDeact, BOOL fMinimized)
static void CharSet(RTF_Info *info)
BOOL WINAPI GetSaveFileNameW(LPOPENFILENAMEW ofn)
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)
BOOL DoImport(HWND hwnd, LPCWSTR pszFile)
void UnescapeOther(const STRING &str, size_t &i, STRING &Ret)
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
WCHAR g_szTitle[MAX_STRING]
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
BOOL WINAPI AdjustWindowRect(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
#define SE_PRIVILEGE_ENABLED
void MainWnd_OnDelete(HWND hwnd)
#define ListView_InsertColumn(hwnd, iCol, pcol)
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
void EditDlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
#define ListView_SetItemState(hwndLV, i, data, mask)
void AddDlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
BOOL WINAPI GetOpenFileNameW(OPENFILENAMEW *ofn)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
void MainWnd_OnNew(HWND hwnd)
_Out_opt_ int _Out_opt_ int * cy
HACCEL WINAPI LoadAcceleratorsW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
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)
#define ListView_SetImageList(hwnd, himl, iImageList)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
#define ListView_DeleteItem(hwnd, i)
#define IDS_ALREADYEXISTS
#define ListView_GetItemCount(hwnd)
void MainWnd_OnClose(HWND hwnd)
void MainWnd_OnDrawItem(HWND hwnd, const DRAWITEMSTRUCT *lpDrawItem)
void MainWnd_OnSize(HWND hwnd, UINT state, int cx, int cy)
#define COLOR_HIGHLIGHTTEXT
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
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 GLint GLint j
#define OFN_PATHMUSTEXIST
#define FILE_FLAG_WRITE_THROUGH
WCHAR g_szNameHead[MAX_STRING]
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
void LV_InvalidateRow(HWND hwnd, INT iRow=-1)
#define ComboBox_GetCount(hwndCtl)
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
void LV_OnDelete(HWND hwnd, INT iRow=-1)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
std::set< STRING > FONTNAMESET
BOOL DoExport(HWND hwnd, LPCWSTR pszFile)
int WINAPI GetScrollPos(_In_ HWND, _In_ int)
void DoSort(INT iColumn, BOOL bAscendant=TRUE)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
int WINAPI GetSystemMetrics(_In_ int)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
void MainWnd_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
#define ListView_SetExtendedListViewStyle(hwndLV, dw)
BOOL DoParseFile(LPVOID pvContents, DWORD dwSize)
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
#define MB_ICONINFORMATION
#define FILE_ATTRIBUTE_NORMAL
#define FILE_SHARE_DELETE
BOOL MainWnd_OnUpdateRegistry(HWND hwnd)
LPWSTR SkipSpace(LPCWSTR pch)
BOOL MainWnd_OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
void MainWnd_OnReload(HWND hwnd)
void LV_OnDblClk(HWND hwnd)
#define GetCurrentProcess()
WCHAR elfFullName[LF_FULLFACESIZE]
ITEM(const STRING &Name, const STRING &Substitute, BYTE CharSet1, BYTE CharSet2)
GLsizei const GLfloat * value
BOOL EnableProcessPrivileges(LPCWSTR lpPrivilegeName, BOOL bEnable=TRUE)
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
#define LR_LOADMAP3DCOLORS
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
BOOL WINAPI ExitWindowsEx(_In_ UINT, _In_ DWORD)
WDF_CHILD_LIST_ITERATOR iterator
int WINAPI MessageBoxIndirectW(_In_ CONST MSGBOXPARAMSW *lpmbp)
void MainWnd_OnImport(HWND hwnd)
#define OPENFILENAME_SIZE_VERSION_400
BOOL WINAPI AdjustTokenPrivileges(HANDLE TokenHandle, BOOL DisableAllPrivileges, PTOKEN_PRIVILEGES NewState, DWORD BufferLength, PTOKEN_PRIVILEGES PreviousState, PDWORD ReturnLength)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
void LV_AddItems(HWND hwnd)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
INT_PTR CALLBACK EditDlg_DlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define OFN_DONTADDTORECENT
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)
BOOL WINAPI DeleteDC(_In_ HDC)
STRING Unquote(const STRING &str)
#define FILE_FLAG_SEQUENTIAL_SCAN
#define VIETNAMESE_CHARSET
LRESULT MainWnd_OnContextMenu(HWND hwnd, HWND hwndContext, UINT xPos, UINT yPos)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define OFN_OVERWRITEPROMPT
#define LR_CREATEDIBSECTION
#define ReadFile(a, b, c, d, e)
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
#define ID_UPDATE_REGISTRY
_In_ WDFCOLLECTION _In_ WDFOBJECT Item
LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]
LPWSTR SkipQuoted(LPWSTR pch)
void MainWnd_OnOpenRegKey(HWND hwnd)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
static int CALLBACK EnumFontFamExProc(const ENUMLOGFONTW *pelf, const NEWTEXTMETRICW *pntm, int FontType, LPARAM lParam)
#define WS_OVERLAPPEDWINDOW
WCHAR lfFaceName[LF_FACESIZE]
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
BOOL WINAPI SetForegroundWindow(_In_ HWND)
void MainWnd_OnMeasureItem(HWND hwnd, MEASUREITEMSTRUCT *lpMeasureItem)
struct CHARSET_ENTRY CHARSET_ENTRY
#define HANDLE_MSG(hwnd, message, fn)
INT WINAPI ImageList_AddMasked(HIMAGELIST himl, HBITMAP hBitmap, COLORREF clrMask)
VOID WINAPI InitCommonControls(void)
#define MAKEINTRESOURCEW(i)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
void MainWnd_OnEdit(HWND hwnd)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
#define TOKEN_ADJUST_PRIVILEGES
bool ItemCompareBySubAscend(const ITEM &Item1, const ITEM &Item2)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
#define ListView_GetColumnWidth(hwnd, iCol)
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)
CHARSET_ENTRY g_CharSetList[]
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define RegCloseKey(hKey)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
void MakeFilter(LPWSTR pszFilter)
#define LVS_OWNERDRAWFIXED
BOOL WINAPI GetTextExtentPoint32W(_In_ HDC hdc, _In_reads_(c) LPCWSTR lpString, _In_ int c, _Out_ LPSIZE psizl)
#define LANG_USER_DEFAULT
int WINAPI MessageBoxA(_In_opt_ HWND hWnd, _In_opt_ LPCSTR lpText, _In_opt_ LPCSTR lpCaption, _In_ UINT uType)
#define ListView_DeleteAllItems(hwnd)
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
static VOID Substitute(_Out_writes_bytes_(BufferSize) PWCHAR Buffer, _In_ ULONG BufferSize, _In_ PCWSTR Template, _In_ PCWSTR SystemDriveName, _In_ PCWSTR SystemRootName)
#define HKEY_LOCAL_MACHINE
#define NAME_COLUMN_WIDTH