diff -ruN reactos.old/base/applications/cmdutils/reg/Pl.rc reactos/base/applications/cmdutils/reg/Pl.rc --- reactos.old/base/applications/cmdutils/reg/Pl.rc 2012-09-12 07:25:49.000000000 +0200 +++ reactos/base/applications/cmdutils/reg/Pl.rc 2012-09-12 22:22:06.243247909 +0200 @@ -4,7 +4,8 @@ * * Copyright 2008 Andrew Riedi * Copyright 2008 Mikolaj Zalewski - * Copyright 2010 ukasz Wojniowicz + * Copyright 2010 Łukasz Wojniłowicz + * Copyright 2012 Mieczyslaw Nalewaj * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -23,17 +24,20 @@ #include "reg.h" +/* UTF-8 */ +#pragma code_page(65001) + LANGUAGE LANG_POLISH, SUBLANG_DEFAULT STRINGTABLE { - STRING_USAGE, "Skadnia tego polecenia:\n\nREG [ ADD | DELETE | QUERY ]\nREG polecenie /?\n" - STRING_ADD_USAGE, "REG ADD nazwa_klucza [/v nazwa_wartoci | /ve] [/t typ] [/s separator] [/d dane] [/f]\n" - STRING_DELETE_USAGE, "REG DELETE nazwa_klucza [/v nazwa_wartoci | /ve | /va] [/f]\n" - STRING_QUERY_USAGE, "REG QUERY nazwa_klucza [/v nazwa_wartoci | /ve] [/s]\n" - STRING_SUCCESS, "Operacja zakoczona pomylnie\n" - STRING_INVALID_KEY, "Bd: Niewaciwa nazwa klucza\n" - STRING_INVALID_CMDLINE, "Bd: Niewaciwe parametry wiersza polece\n" - STRING_NO_REMOTE, "Bd: Nie mona doda kluczy do zdalnej maszyny\n" - STRING_CANNOT_FIND, "Bd: System nie mg znale podanej wartoci lub klucza rejestru\n" + STRING_USAGE, "Składnia tego polecenia:\n\nREG [ ADD | DELETE | QUERY ]\nREG polecenie /?\n" + STRING_ADD_USAGE, "REG ADD nazwa_klucza [/v nazwa_wartości | /ve] [/t typ] [/s separator] [/d dane] [/f]\n" + STRING_DELETE_USAGE, "REG DELETE nazwa_klucza [/v nazwa_wartości | /ve | /va] [/f]\n" + STRING_QUERY_USAGE, "REG QUERY nazwa_klucza [/v nazwa_wartości | /ve] [/s]\n" + STRING_SUCCESS, "Operacja zakończona pomyślnie\n" + STRING_INVALID_KEY, "Błąd: Niewłaściwa nazwa klucza\n" + STRING_INVALID_CMDLINE, "Błąd: Niewłaściwe parametry wiersza poleceń\n" + STRING_NO_REMOTE, "Błąd: Nie można dodać kluczy do zdalnej maszyny\n" + STRING_CANNOT_FIND, "Błąd: System nie mógł znaleźć podanej wartości lub klucza rejestru\n" } diff -ruN reactos.old/base/applications/cmdutils/reg/reg.c reactos/base/applications/cmdutils/reg/reg.c --- reactos.old/base/applications/cmdutils/reg/reg.c 2012-09-12 07:25:49.000000000 +0200 +++ reactos/base/applications/cmdutils/reg/reg.c 2012-09-12 22:10:03.694248532 +0200 @@ -1,5 +1,6 @@ /* * Copyright 2008 Andrew Riedi + * Copyright 2012 Mieczyslaw Nalewaj * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -65,21 +66,44 @@ static HKEY get_rootkey(LPWSTR key) { + BOOL CompareRegW(LPCTSTR lpString1, LPCTSTR lpString2) + { + int cchCount; + if ((!lpString1)||(!lpString2)||(!*lpString1)||(!*lpString2)) + return FALSE; + cchCount = strlenW(lpString2); + if (strlenW(lpString1)', '\t',0}; + static const WCHAR stubREG_SZW[] = { 'R', 'E', 'G', '_', 'S', 'Z', '\t', '%', 's', '\n',0}; + static const WCHAR stubREG_EXPAND_SZW[] = { 'R', 'E', 'G', '_', 'E', 'X', 'P', 'A', 'N', 'D', '_', 'S', 'Z', '\t', '%', 's', '\n',0}; + static const WCHAR stubREG_DWORDW[] = { 'R', 'E', 'G', '_', 'D', 'W', 'O', 'R', 'D', '\t', '0', 'x', '%', 'X', '\n',0}; + static const WCHAR stubREG_BINARY1W[] = { 'R', 'E', 'G', '_', 'D', 'W', 'O', 'R', 'D', '\t',0}; + static const WCHAR stubREG_BINARY2W[] = { '%', '.','2', 'X' ,0}; + static const WCHAR stubREG_MULTI_SZ1W[] = { 'R', 'E', 'G', '_', 'M', 'U', 'L', 'T', 'I', '_', 'S', 'Z', '\t',0}; + static const WCHAR stubREG_MULTI_SZ2W[] = { '%', 'c' ,0}; + static const WCHAR stubREG_MULTI_SZ0W[] = { '\\', '0' ,0}; + static const WCHAR stubREG_3W[] = { '\n',0}; + + + if (key_name[0]=='\\' && key_name[1]=='\\') + { + reg_message(STRING_NO_REMOTE); + return 1; + } + + p = strchrW(key_name,'\\'); + if (!p) + { + reg_message(STRING_INVALID_KEY); + return 1; + } + p++; - return 1; + root = get_rootkey(key_name); + if (!root) + { + reg_message(STRING_INVALID_KEY); + return 1; + } + + if(RegOpenKeyW(root,p,&querykey)!=ERROR_SUCCESS) + { + reg_message(STRING_CANNOT_FIND); + return 1; + } + + LPWSTR szValue; + LPBYTE bnData; + LPWSTR szSubk; + + DWORD maxValue; + DWORD maxData; + DWORD maxSubk; + DWORD values; + DWORD type; + DWORD subkeys; + + LONG rc; + + reg_printfW(stubRW); + + rc = RegQueryInfoKeyW(querykey, NULL, NULL, NULL, &subkeys, &maxSubk, NULL, &values, + &maxValue, &maxData, NULL, NULL); + if (rc != ERROR_SUCCESS) + { + RegCloseKey(querykey); + return 1; + } + maxValue++; + szValue = HeapAlloc(GetProcessHeap(),0,maxValue*sizeof(WCHAR)); + maxData+=2; + bnData = HeapAlloc(GetProcessHeap(),0,maxData); + maxSubk++; + szSubk = HeapAlloc(GetProcessHeap(),0,maxSubk*sizeof(WCHAR)); + + int licz; + int n; + WCHAR zaw; + BOOL exist = FALSE; + + reg_printfW(stubW, key_name); + + rc = ERROR_SUCCESS; + for (licz=0; licz