mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[REGEDIT] Support exporting registry to text file (#5619)
- Add txtproc.c source file. - Add some resource strings. - Add *.txt filter to export on a text file. CORE-16910
This commit is contained in:
parent
8c0c2e2be7
commit
c16f93c5f3
35 changed files with 945 additions and 16 deletions
|
@ -20,6 +20,7 @@ list(APPEND SOURCE
|
|||
security.c
|
||||
settings.c
|
||||
treeview.c
|
||||
txtproc.c
|
||||
regedit.h)
|
||||
|
||||
file(GLOB regedit_rc_deps res/*.*)
|
||||
|
|
|
@ -230,8 +230,7 @@ static BOOL CheckCommDlgError(HWND hWnd)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
WCHAR FileNameBuffer[_MAX_PATH];
|
||||
WCHAR FileTitleBuffer[_MAX_PATH];
|
||||
WCHAR FileNameBuffer[MAX_PATH];
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -255,9 +254,9 @@ BuildFilterStrings(WCHAR *Filter, PFILTERPAIR Pairs, int PairCount)
|
|||
Filter[++c] = L'\0';
|
||||
}
|
||||
|
||||
static BOOL InitOpenFileName(HWND hWnd, OPENFILENAME* pofn)
|
||||
static BOOL InitOpenFileName(HWND hWnd, OPENFILENAME* pofn, BOOL bSave)
|
||||
{
|
||||
FILTERPAIR FilterPairs[4];
|
||||
FILTERPAIR FilterPairs[5];
|
||||
static WCHAR Filter[1024];
|
||||
|
||||
memset(pofn, 0, sizeof(OPENFILENAME));
|
||||
|
@ -272,17 +271,31 @@ static BOOL InitOpenFileName(HWND hWnd, OPENFILENAME* pofn)
|
|||
FilterPairs[1].FilterID = IDS_FLT_HIVFILES_FLT;
|
||||
FilterPairs[2].DisplayID = IDS_FLT_REGEDIT4;
|
||||
FilterPairs[2].FilterID = IDS_FLT_REGEDIT4_FLT;
|
||||
FilterPairs[3].DisplayID = IDS_FLT_ALLFILES;
|
||||
FilterPairs[3].FilterID = IDS_FLT_ALLFILES_FLT;
|
||||
BuildFilterStrings(Filter, FilterPairs, ARRAY_SIZE(FilterPairs));
|
||||
if (bSave)
|
||||
{
|
||||
FilterPairs[3].DisplayID = IDS_FLT_TXTFILES;
|
||||
FilterPairs[3].FilterID = IDS_FLT_TXTFILES_FLT;
|
||||
FilterPairs[4].DisplayID = IDS_FLT_ALLFILES;
|
||||
FilterPairs[4].FilterID = IDS_FLT_ALLFILES_FLT;
|
||||
}
|
||||
else
|
||||
{
|
||||
FilterPairs[3].DisplayID = IDS_FLT_ALLFILES;
|
||||
FilterPairs[3].FilterID = IDS_FLT_ALLFILES_FLT;
|
||||
}
|
||||
|
||||
BuildFilterStrings(Filter, FilterPairs, ARRAY_SIZE(FilterPairs) - !bSave);
|
||||
|
||||
pofn->lpstrFilter = Filter;
|
||||
pofn->lpstrFile = FileNameBuffer;
|
||||
pofn->nMaxFile = _MAX_PATH;
|
||||
pofn->lpstrFileTitle = FileTitleBuffer;
|
||||
pofn->nMaxFileTitle = _MAX_PATH;
|
||||
pofn->nMaxFile = _countof(FileNameBuffer);
|
||||
pofn->Flags = OFN_EXPLORER | OFN_HIDEREADONLY;
|
||||
pofn->lpstrDefExt = L"reg";
|
||||
if (bSave)
|
||||
pofn->Flags |= OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST;
|
||||
else
|
||||
pofn->Flags |= OFN_FILEMUSTEXIST;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -354,7 +367,7 @@ static BOOL LoadHive(HWND hWnd)
|
|||
/* get the item key to load the hive in */
|
||||
pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey);
|
||||
/* initialize the "open file" dialog */
|
||||
InitOpenFileName(hWnd, &ofn);
|
||||
InitOpenFileName(hWnd, &ofn, FALSE);
|
||||
/* build the "All Files" filter up */
|
||||
filter.DisplayID = IDS_FLT_ALLFILES;
|
||||
filter.FilterID = IDS_FLT_ALLFILES_FLT;
|
||||
|
@ -364,7 +377,7 @@ static BOOL LoadHive(HWND hWnd)
|
|||
LoadStringW(hInst, IDS_LOAD_HIVE, Caption, ARRAY_SIZE(Caption));
|
||||
ofn.lpstrTitle = Caption;
|
||||
ofn.Flags |= OFN_ENABLESIZING;
|
||||
/* ofn.lCustData = ;*/
|
||||
|
||||
/* now load the hive */
|
||||
if (GetOpenFileName(&ofn))
|
||||
{
|
||||
|
@ -442,11 +455,11 @@ static BOOL ImportRegistryFile(HWND hWnd)
|
|||
/* Figure out in which key path we are importing */
|
||||
pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
|
||||
|
||||
InitOpenFileName(hWnd, &ofn);
|
||||
InitOpenFileName(hWnd, &ofn, FALSE);
|
||||
LoadStringW(hInst, IDS_IMPORT_REG_FILE, Caption, ARRAY_SIZE(Caption));
|
||||
ofn.lpstrTitle = Caption;
|
||||
ofn.Flags |= OFN_ENABLESIZING;
|
||||
/* ofn.lCustData = ;*/
|
||||
|
||||
if (GetOpenFileName(&ofn))
|
||||
{
|
||||
/* Look at the extension of the file to determine its type */
|
||||
|
@ -590,7 +603,7 @@ BOOL ExportRegistryFile(HWND hWnd)
|
|||
pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
|
||||
GetKeyName(ExportKeyPath, ARRAY_SIZE(ExportKeyPath), hKeyRoot, pszKeyPath);
|
||||
|
||||
InitOpenFileName(hWnd, &ofn);
|
||||
InitOpenFileName(hWnd, &ofn, TRUE);
|
||||
LoadStringW(hInst, IDS_EXPORT_REG_FILE, Caption, ARRAY_SIZE(Caption));
|
||||
ofn.lpstrTitle = Caption;
|
||||
|
||||
|
@ -599,7 +612,7 @@ BOOL ExportRegistryFile(HWND hWnd)
|
|||
{
|
||||
ofn.lCustData = (LPARAM) ExportKeyPath;
|
||||
}
|
||||
ofn.Flags = OFN_ENABLETEMPLATE | OFN_EXPLORER | OFN_ENABLEHOOK | OFN_OVERWRITEPROMPT;
|
||||
ofn.Flags |= OFN_ENABLETEMPLATE | OFN_ENABLEHOOK;
|
||||
ofn.lpfnHook = ExportRegistryFile_OFNHookProc;
|
||||
ofn.lpTemplateName = MAKEINTRESOURCEW(IDD_EXPORTRANGE);
|
||||
if (GetSaveFileName(&ofn))
|
||||
|
@ -677,6 +690,19 @@ BOOL ExportRegistryFile(HWND hWnd)
|
|||
|
||||
break;
|
||||
}
|
||||
|
||||
case 4: /* Text File */
|
||||
{
|
||||
bRet = txt_export_registry_key(ofn.lpstrFile, ExportKeyPath);
|
||||
if (!bRet)
|
||||
{
|
||||
/* Error creating the file */
|
||||
LoadStringW(hInst, IDS_APP_TITLE, szTitle, ARRAY_SIZE(szTitle));
|
||||
LoadStringW(hInst, IDS_EXPORT_ERROR, szText, ARRAY_SIZE(szText));
|
||||
InfoMessageBox(hWnd, MB_OK | MB_ICONERROR, szTitle, szText, ofn.lpstrFile);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -426,6 +426,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Всички файлове (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -521,6 +523,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Неизвестен вид интерфейс"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Všechny soubory (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Neznámý typ rozhraní"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Alle Dateien (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unbekannter Schnittstellentyp"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Όλα τα αρχεία (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "All Files (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -424,6 +424,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Todos los archivos (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -519,6 +521,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Tipo de interfaz desconocido"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Tous les fichiers (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "כל הקבצים (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "All Files (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Semua Berkas (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Tutti i file (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Tipologia interfaccia sconosciuta"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "すべてのファイル (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -423,6 +423,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "모든 파일 (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -518,6 +520,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "All Files (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Alle Filer (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -431,6 +431,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Wszystkie pliki (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -526,6 +528,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Nieznany typ interfejsu"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Todos os arquivos (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Todos os ficheiros (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -431,6 +431,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Orice fișier (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -526,6 +528,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Nespecificat"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Все файлы (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Неизвестный тип интерфейса"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -426,6 +426,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Všetky súbory (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -521,6 +523,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "All Files (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -425,6 +425,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Gjith Dokumentat (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -520,6 +522,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -421,6 +421,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Alla filer (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -516,6 +518,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -423,6 +423,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "All Files (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -518,6 +520,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -423,6 +423,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Tüm Dosyalar (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -518,6 +520,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Bilinmeyen Arayüz Türü"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -423,6 +423,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "Усі файли (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -518,6 +520,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "Unknown Interface Type"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -431,6 +431,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "所有文件 (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -526,6 +528,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "未知的接口类型"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -429,6 +429,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "所有檔案 (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -524,6 +526,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "不明介面類型"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -430,6 +430,8 @@ BEGIN
|
|||
IDS_FLT_REGEDIT4_FLT "*.reg"
|
||||
IDS_FLT_ALLFILES "所有檔案 (*.*)"
|
||||
IDS_FLT_ALLFILES_FLT "*.*"
|
||||
IDS_FLT_TXTFILES "Text Files (*.txt)"
|
||||
IDS_FLT_TXTFILES_FLT "*.txt"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -525,6 +527,20 @@ BEGIN
|
|||
IDS_BUS_UNKNOWNTYPE "不明介面類型"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FIELD_KEY_NAME "Key Name:"
|
||||
IDS_FIELD_CLASS_NAME "Class Name:"
|
||||
IDS_NO_CLASS_NAME "<NO CLASS>"
|
||||
IDS_NULL_TIMESTAMP "<NULL>"
|
||||
IDS_FIELD_NAME " Name:"
|
||||
IDS_FIELD_TYPE " Type:"
|
||||
IDS_FIELD_DATA " Data:"
|
||||
IDS_FIELD_LASTWRITE "Last Write Time:"
|
||||
IDS_UNKNOWN "<UNKNOWN>"
|
||||
IDS_VALUE_INDEX "Value %d"
|
||||
END
|
||||
|
||||
/*****************************************************************/
|
||||
|
||||
/* Dialogs */
|
||||
|
|
|
@ -163,4 +163,7 @@ void DestroyTreeView(HWND hwndTV);
|
|||
void DestroyListView(HWND hwndLV);
|
||||
void DestroyMainMenu(void);
|
||||
|
||||
/* txtproc.c */
|
||||
BOOL txt_export_registry_key(LPCWSTR file_name, LPCWSTR path);
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -168,6 +168,8 @@
|
|||
#define IDS_FLT_REGEDIT4_FLT 31006
|
||||
#define IDS_FLT_ALLFILES 31007
|
||||
#define IDS_FLT_ALLFILES_FLT 31008
|
||||
#define IDS_FLT_TXTFILES 31009
|
||||
#define IDS_FLT_TXTFILES_FLT 31010
|
||||
|
||||
#define IDS_ACCESS_FULLCONTROL 31100
|
||||
#define IDS_ACCESS_READ 31101
|
||||
|
@ -244,6 +246,17 @@
|
|||
#define IDS_BUS_PNPBUS 31546
|
||||
#define IDS_BUS_UNKNOWNTYPE 31547
|
||||
|
||||
#define IDS_FIELD_KEY_NAME 31600
|
||||
#define IDS_FIELD_CLASS_NAME 31601
|
||||
#define IDS_NO_CLASS_NAME 31602
|
||||
#define IDS_NULL_TIMESTAMP 31603
|
||||
#define IDS_FIELD_NAME 31604
|
||||
#define IDS_FIELD_TYPE 31605
|
||||
#define IDS_FIELD_DATA 31606
|
||||
#define IDS_FIELD_LASTWRITE 31607
|
||||
#define IDS_UNKNOWN 31608
|
||||
#define IDS_VALUE_INDEX 31609
|
||||
|
||||
#define IDD_EDIT_STRING 2000
|
||||
#define IDC_VALUE_NAME 2001
|
||||
#define IDC_VALUE_DATA 2002
|
||||
|
|
406
base/applications/regedit/txtproc.c
Normal file
406
base/applications/regedit/txtproc.c
Normal file
|
@ -0,0 +1,406 @@
|
|||
/*
|
||||
* PROJECT: ReactOS Registry Editor
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Exporting registry data to a text file
|
||||
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#include "regedit.h"
|
||||
|
||||
static HKEY reg_class_keys[] =
|
||||
{
|
||||
HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT,
|
||||
HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, HKEY_DYN_DATA
|
||||
};
|
||||
|
||||
static LPWSTR load_str(INT id)
|
||||
{
|
||||
/* Use rotation buffer */
|
||||
static WCHAR s_asz[3][MAX_PATH];
|
||||
static INT s_index = 0;
|
||||
LPWSTR psz;
|
||||
LoadStringW(hInst, id, s_asz[s_index], MAX_PATH);
|
||||
psz = s_asz[s_index];
|
||||
s_index = (s_index + 1) % _countof(s_asz);
|
||||
return psz;
|
||||
}
|
||||
|
||||
static void txt_fputs(FILE *fp, LPCWSTR str)
|
||||
{
|
||||
fwrite(str, lstrlenW(str) * sizeof(WCHAR), 1, fp);
|
||||
}
|
||||
|
||||
static void txt_newline(FILE *fp)
|
||||
{
|
||||
txt_fputs(fp, L"\r\n");
|
||||
}
|
||||
|
||||
static void txt_fprintf(FILE *fp, LPCWSTR format, ...)
|
||||
{
|
||||
WCHAR line[1024];
|
||||
va_list va;
|
||||
va_start(va, format);
|
||||
StringCchVPrintfW(line, _countof(line), format, va);
|
||||
txt_fputs(fp, line);
|
||||
va_end(va);
|
||||
}
|
||||
|
||||
static HKEY txt_parse_key_name(LPCWSTR key_name, WCHAR **key_path)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
if (!key_name) return 0;
|
||||
|
||||
*key_path = wcschr(key_name, '\\');
|
||||
if (*key_path)
|
||||
(*key_path)++;
|
||||
|
||||
for (i = 0; i < _countof(reg_class_keys); i++)
|
||||
{
|
||||
int len = lstrlenW(reg_class_namesW[i]);
|
||||
if (!_wcsnicmp(key_name, reg_class_namesW[i], len) &&
|
||||
(key_name[len] == 0 || key_name[len] == '\\'))
|
||||
{
|
||||
return reg_class_keys[i];
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void txt_export_binary(FILE *fp, const void *data, size_t size)
|
||||
{
|
||||
const BYTE *pb = data;
|
||||
for (DWORD addr = 0; addr < size; addr += 0x10)
|
||||
{
|
||||
txt_fprintf(fp, L"%08X ", addr);
|
||||
for (size_t column = 0; column < 16; ++column)
|
||||
{
|
||||
if (addr + column >= size)
|
||||
{
|
||||
if (column == 8)
|
||||
txt_fputs(fp, L" ");
|
||||
txt_fputs(fp, L" ");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (column == 8)
|
||||
txt_fputs(fp, L" -");
|
||||
txt_fprintf(fp, L" %02x", (pb[addr + column] & 0xFF));
|
||||
}
|
||||
}
|
||||
txt_fputs(fp, L" ");
|
||||
for (size_t column = 0; column < 16; ++column)
|
||||
{
|
||||
if (addr + column >= size)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
BYTE b = pb[addr + column];
|
||||
if (isprint(b) || IsCharAlphaNumericW(b))
|
||||
txt_fprintf(fp, L"%c", b);
|
||||
else
|
||||
txt_fputs(fp, L".");
|
||||
}
|
||||
}
|
||||
txt_newline(fp);
|
||||
}
|
||||
}
|
||||
|
||||
static void txt_export_field(FILE *fp, LPCWSTR label, LPCWSTR value)
|
||||
{
|
||||
txt_fprintf(fp, L"%-19s%s\r\n", label, value);
|
||||
}
|
||||
|
||||
static void txt_export_multi_sz(FILE *fp, const void *data, size_t size)
|
||||
{
|
||||
LPCWSTR pch;
|
||||
for (pch = data; *pch; pch += lstrlenW(pch) + 1)
|
||||
{
|
||||
if (pch == data)
|
||||
txt_export_field(fp, load_str(IDS_FIELD_DATA), pch);
|
||||
else
|
||||
txt_export_field(fp, L"", pch);
|
||||
}
|
||||
}
|
||||
|
||||
static void txt_export_type(FILE *fp, LPCWSTR type)
|
||||
{
|
||||
txt_export_field(fp, load_str(IDS_FIELD_TYPE), type);
|
||||
}
|
||||
|
||||
static void txt_export_name(FILE *fp, LPCWSTR name)
|
||||
{
|
||||
txt_export_field(fp, load_str(IDS_FIELD_NAME), name);
|
||||
}
|
||||
|
||||
static void
|
||||
txt_export_data(FILE *fp, INT i, LPCWSTR value_name, DWORD value_len, DWORD type,
|
||||
const void *data, size_t size)
|
||||
{
|
||||
LPCWSTR pszType;
|
||||
|
||||
txt_fprintf(fp, load_str(IDS_VALUE_INDEX), i);
|
||||
txt_newline(fp);
|
||||
txt_export_name(fp, value_name);
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case REG_SZ:
|
||||
txt_export_type(fp, L"REG_SZ");
|
||||
txt_export_field(fp, load_str(IDS_FIELD_DATA), data);
|
||||
break;
|
||||
|
||||
case REG_DWORD:
|
||||
txt_export_type(fp, L"REG_DWORD");
|
||||
txt_fprintf(fp, L"%-19s0x%lx\r\n", load_str(IDS_FIELD_DATA), *(DWORD*)data);
|
||||
break;
|
||||
|
||||
case REG_EXPAND_SZ:
|
||||
txt_export_type(fp, L"REG_EXPAND_SZ");
|
||||
txt_export_field(fp, load_str(IDS_FIELD_DATA), data);
|
||||
break;
|
||||
|
||||
case REG_MULTI_SZ:
|
||||
txt_export_type(fp, L"REG_MULTI_SZ");
|
||||
txt_export_multi_sz(fp, data, size);
|
||||
break;
|
||||
|
||||
case REG_BINARY:
|
||||
case REG_QWORD:
|
||||
case REG_NONE:
|
||||
default:
|
||||
if (type == REG_BINARY)
|
||||
pszType = L"REG_BINARY";
|
||||
else if (type == REG_QWORD)
|
||||
pszType = L"REG_QWORD";
|
||||
else if (type == REG_NONE)
|
||||
pszType = L"REG_NONE";
|
||||
else
|
||||
pszType = load_str(IDS_UNKNOWN);
|
||||
|
||||
txt_export_type(fp, pszType);
|
||||
txt_export_field(fp, load_str(IDS_FIELD_DATA), L"");
|
||||
txt_export_binary(fp, data, size);
|
||||
break;
|
||||
}
|
||||
|
||||
txt_newline(fp);
|
||||
}
|
||||
|
||||
static WCHAR *
|
||||
txt_build_subkey_path(LPCWSTR path, DWORD path_len, LPCWSTR subkey_name, DWORD subkey_len)
|
||||
{
|
||||
WCHAR *subkey_path;
|
||||
subkey_path = malloc((path_len + subkey_len + 2) * sizeof(WCHAR));
|
||||
swprintf(subkey_path, L"%s\\%s", path, subkey_name);
|
||||
return subkey_path;
|
||||
}
|
||||
|
||||
static void txt_export_key_name(FILE *fp, LPCWSTR name)
|
||||
{
|
||||
txt_export_field(fp, load_str(IDS_FIELD_KEY_NAME), name);
|
||||
}
|
||||
|
||||
static void txt_export_class_and_last_write(FILE *fp, HKEY key)
|
||||
{
|
||||
WCHAR szClassName[MAX_PATH];
|
||||
DWORD cchClassName = _countof(szClassName);
|
||||
FILETIME ftLastWrite, ftLocal, ftNull = { 0 };
|
||||
SYSTEMTIME stLastWrite;
|
||||
WCHAR sz1[64], sz2[64];
|
||||
LONG error;
|
||||
|
||||
error = RegQueryInfoKeyW(key, szClassName, &cchClassName, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, &ftLastWrite);
|
||||
if (error != ERROR_SUCCESS)
|
||||
{
|
||||
cchClassName = 0;
|
||||
ftLastWrite = ftNull;
|
||||
}
|
||||
|
||||
szClassName[_countof(szClassName) - 1] = UNICODE_NULL;
|
||||
|
||||
if (cchClassName > 0)
|
||||
txt_export_field(fp, load_str(IDS_FIELD_CLASS_NAME), szClassName);
|
||||
else
|
||||
txt_export_field(fp, load_str(IDS_FIELD_CLASS_NAME), load_str(IDS_NO_CLASS_NAME));
|
||||
|
||||
if (memcmp(&ftLastWrite, &ftNull, sizeof(ftNull)) == 0)
|
||||
{
|
||||
txt_export_field(fp, load_str(IDS_FIELD_LASTWRITE), load_str(IDS_NULL_TIMESTAMP));
|
||||
return;
|
||||
}
|
||||
|
||||
FileTimeToLocalFileTime(&ftLastWrite, &ftLocal);
|
||||
FileTimeToSystemTime(&ftLocal, &stLastWrite);
|
||||
GetDateFormatW(LOCALE_USER_DEFAULT, DATE_SHORTDATE, &stLastWrite, NULL, sz1, _countof(sz1));
|
||||
GetTimeFormatW(LOCALE_USER_DEFAULT, TIME_NOSECONDS, &stLastWrite, NULL, sz2, _countof(sz2));
|
||||
txt_fprintf(fp, L"%-19s%s - %s\r\n", load_str(IDS_FIELD_LASTWRITE), sz1, sz2);
|
||||
}
|
||||
|
||||
static void txt_export_registry_data(FILE *fp, HKEY key, LPCWSTR path)
|
||||
{
|
||||
LONG rc;
|
||||
DWORD max_value_len = MAX_PATH, value_len;
|
||||
DWORD max_data_bytes = 2048, data_size;
|
||||
DWORD subkey_len;
|
||||
DWORD i, type, path_len;
|
||||
WCHAR *value_name, *subkey_name, *subkey_path;
|
||||
BYTE *data;
|
||||
HKEY subkey;
|
||||
|
||||
txt_export_key_name(fp, path);
|
||||
txt_export_class_and_last_write(fp, key);
|
||||
|
||||
value_name = malloc(max_value_len * sizeof(WCHAR));
|
||||
data = malloc(max_data_bytes);
|
||||
|
||||
i = 0;
|
||||
for (;;)
|
||||
{
|
||||
value_len = max_value_len;
|
||||
data_size = max_data_bytes;
|
||||
rc = RegEnumValueW(key, i, value_name, &value_len, NULL, &type, data, &data_size);
|
||||
if (rc == ERROR_SUCCESS)
|
||||
{
|
||||
txt_export_data(fp, i, value_name, value_len, type, data, data_size);
|
||||
i++;
|
||||
}
|
||||
else if (rc == ERROR_MORE_DATA)
|
||||
{
|
||||
if (data_size > max_data_bytes)
|
||||
{
|
||||
max_data_bytes = data_size;
|
||||
data = realloc(data, max_data_bytes);
|
||||
}
|
||||
else
|
||||
{
|
||||
max_value_len *= 2;
|
||||
value_name = realloc(value_name, max_value_len * sizeof(WCHAR));
|
||||
}
|
||||
}
|
||||
else break;
|
||||
}
|
||||
|
||||
free(data);
|
||||
free(value_name);
|
||||
|
||||
subkey_name = malloc(MAX_PATH * sizeof(WCHAR));
|
||||
|
||||
path_len = lstrlenW(path);
|
||||
|
||||
i = 0;
|
||||
for (;;)
|
||||
{
|
||||
subkey_len = MAX_PATH;
|
||||
rc = RegEnumKeyExW(key, i, subkey_name, &subkey_len, NULL, NULL, NULL, NULL);
|
||||
if (rc == ERROR_SUCCESS)
|
||||
{
|
||||
if (i == 0)
|
||||
txt_newline(fp);
|
||||
|
||||
subkey_path = txt_build_subkey_path(path, path_len, subkey_name, subkey_len);
|
||||
if (!RegOpenKeyExW(key, subkey_name, 0, KEY_READ, &subkey))
|
||||
{
|
||||
txt_newline(fp);
|
||||
txt_export_registry_data(fp, subkey, subkey_path);
|
||||
RegCloseKey(subkey);
|
||||
}
|
||||
free(subkey_path);
|
||||
i++;
|
||||
}
|
||||
else break;
|
||||
}
|
||||
|
||||
free(subkey_name);
|
||||
}
|
||||
|
||||
static FILE *txt_open_export_file(LPCWSTR file_name)
|
||||
{
|
||||
FILE *file = _wfopen(file_name, L"wb");
|
||||
if (file)
|
||||
fwrite("\xFF\xFE", 2, 1, file);
|
||||
return file;
|
||||
}
|
||||
|
||||
static HKEY txt_open_export_key(HKEY key_class, LPCWSTR subkey, LPCWSTR path)
|
||||
{
|
||||
HKEY key;
|
||||
|
||||
if (RegOpenKeyExW(key_class, subkey, 0, KEY_READ, &key) != ERROR_SUCCESS)
|
||||
return NULL;
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
static BOOL txt_export_key(LPCWSTR file_name, LPCWSTR path)
|
||||
{
|
||||
HKEY key_class, key;
|
||||
WCHAR *subkey;
|
||||
FILE *fp;
|
||||
|
||||
if (!(key_class = txt_parse_key_name(path, &subkey)))
|
||||
{
|
||||
if (subkey) *(subkey - 1) = 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!(key = txt_open_export_key(key_class, subkey, path)))
|
||||
return FALSE;
|
||||
|
||||
fp = txt_open_export_file(file_name);
|
||||
if (fp)
|
||||
{
|
||||
txt_export_registry_data(fp, key, path);
|
||||
txt_newline(fp);
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
RegCloseKey(key);
|
||||
return fp != NULL;
|
||||
}
|
||||
|
||||
static BOOL txt_export_all(LPCWSTR file_name, LPCWSTR path)
|
||||
{
|
||||
FILE *fp;
|
||||
int i;
|
||||
HKEY classes[] = {HKEY_LOCAL_MACHINE, HKEY_USERS}, key;
|
||||
WCHAR *class_name;
|
||||
|
||||
fp = txt_open_export_file(file_name);
|
||||
if (!fp)
|
||||
return FALSE;
|
||||
|
||||
for (i = 0; i < _countof(classes); i++)
|
||||
{
|
||||
if (!(key = txt_open_export_key(classes[i], NULL, path)))
|
||||
{
|
||||
fclose(fp);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
class_name = malloc((lstrlenW(reg_class_namesW[i]) + 1) * sizeof(WCHAR));
|
||||
lstrcpyW(class_name, reg_class_namesW[i]);
|
||||
|
||||
txt_export_registry_data(fp, classes[i], class_name);
|
||||
|
||||
free(class_name);
|
||||
RegCloseKey(key);
|
||||
}
|
||||
|
||||
txt_newline(fp);
|
||||
fclose(fp);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL txt_export_registry_key(LPCWSTR file_name, LPCWSTR path)
|
||||
{
|
||||
if (path && *path)
|
||||
return txt_export_key(file_name, path);
|
||||
else
|
||||
return txt_export_all(file_name, path);
|
||||
}
|
Loading…
Reference in a new issue