40{
43
44 if (!force)
45 {
47
48 if (value_name || value_empty)
50 else if (value_all)
52 else
54
56 {
58 return 0;
59 }
60 }
61
63 {
65 return 1;
66 }
67
68
69 if (!value_name && !value_empty && !value_all)
70 {
72 {
75 return 1;
76 }
77
80
82 return 0;
83 }
84
86
87 if (value_all)
88 {
89 DWORD max_value_len = 256, value_len;
91
93
94 while (1)
95 {
96 value_len = max_value_len;
99 {
102 {
107 return 1;
108 }
109 }
111 {
112 max_value_len *= 2;
113 value_name =
realloc(value_name, max_value_len *
sizeof(
WCHAR));
114 }
115 else break;
116 }
118 }
119 else if (value_name || value_empty)
120 {
122 {
125 return 1;
126 }
127 }
128
131 return 0;
132}
static void output_error(LONG rc)
BOOL ask_confirm(unsigned int msgid, WCHAR *reg_info)
#define STRING_VALUEALL_FAILED
#define STRING_DELETE_VALUE
#define STRING_DELETE_VALUEALL
#define STRING_DELETE_SUBKEY
#define RegCloseKey(hKey)
LSTATUS WINAPI RegDeleteTreeW(_In_ HKEY, _In_opt_ LPCWSTR)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
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)