Simplify COpRegValueCreate
Registry is a binary storage. No need to treat strings, DWORDs, or binaries any different. Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
parent
5581277863
commit
f39c7b3caf
@ -326,11 +326,7 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
DWORD m_dwType;
|
DWORD m_dwType;
|
||||||
std::wstring m_sData;
|
|
||||||
std::vector<BYTE> m_binData;
|
std::vector<BYTE> m_binData;
|
||||||
DWORD m_dwData;
|
|
||||||
std::vector<WCHAR> m_szData;
|
|
||||||
DWORDLONG m_qwData;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -1036,17 +1032,7 @@ inline BOOL operator <<(CStream &f, const COpRegValueCreate &op)
|
|||||||
{
|
{
|
||||||
if (!(f << (const COpRegValueSingle &)op)) return FALSE;
|
if (!(f << (const COpRegValueSingle &)op)) return FALSE;
|
||||||
if (!(f << op.m_dwType )) return FALSE;
|
if (!(f << op.m_dwType )) return FALSE;
|
||||||
switch (op.m_dwType) {
|
if (!(f << op.m_binData )) return FALSE;
|
||||||
case REG_SZ:
|
|
||||||
case REG_EXPAND_SZ:
|
|
||||||
case REG_LINK: if (!(f << op.m_sData )) return FALSE; break;
|
|
||||||
case REG_BINARY: if (!(f << op.m_binData)) return FALSE; break;
|
|
||||||
case REG_DWORD_LITTLE_ENDIAN:
|
|
||||||
case REG_DWORD_BIG_ENDIAN: if (!(f << op.m_dwData )) return FALSE; break;
|
|
||||||
case REG_MULTI_SZ: if (!(f << op.m_szData )) return FALSE; break;
|
|
||||||
case REG_QWORD_LITTLE_ENDIAN: if (!(f << op.m_qwData )) return FALSE; break;
|
|
||||||
default: ::SetLastError(ERROR_INVALID_DATA); return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -1056,17 +1042,7 @@ inline BOOL operator >>(CStream &f, COpRegValueCreate &op)
|
|||||||
{
|
{
|
||||||
if (!(f >> (COpRegValueSingle &)op)) return FALSE;
|
if (!(f >> (COpRegValueSingle &)op)) return FALSE;
|
||||||
if (!(f >> op.m_dwType )) return FALSE;
|
if (!(f >> op.m_dwType )) return FALSE;
|
||||||
switch (op.m_dwType) {
|
if (!(f >> op.m_binData )) return FALSE;
|
||||||
case REG_SZ:
|
|
||||||
case REG_EXPAND_SZ:
|
|
||||||
case REG_LINK: if (!(f >> op.m_sData )) return FALSE; break;
|
|
||||||
case REG_BINARY: if (!(f >> op.m_binData)) return FALSE; break;
|
|
||||||
case REG_DWORD_LITTLE_ENDIAN:
|
|
||||||
case REG_DWORD_BIG_ENDIAN: if (!(f >> op.m_dwData )) return FALSE; break;
|
|
||||||
case REG_MULTI_SZ: if (!(f >> op.m_szData )) return FALSE; break;
|
|
||||||
case REG_QWORD_LITTLE_ENDIAN: if (!(f >> op.m_qwData )) return FALSE; break;
|
|
||||||
default: ::SetLastError(ERROR_INVALID_DATA); return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -454,7 +454,7 @@ COpRegValueCreate::COpRegValueCreate(HKEY hKeyRoot, LPCWSTR pszKeyName, LPCWSTR
|
|||||||
|
|
||||||
COpRegValueCreate::COpRegValueCreate(HKEY hKeyRoot, LPCWSTR pszKeyName, LPCWSTR pszValueName, DWORD dwData, int iTicks) :
|
COpRegValueCreate::COpRegValueCreate(HKEY hKeyRoot, LPCWSTR pszKeyName, LPCWSTR pszValueName, DWORD dwData, int iTicks) :
|
||||||
m_dwType(REG_DWORD),
|
m_dwType(REG_DWORD),
|
||||||
m_dwData(dwData),
|
m_binData(reinterpret_cast<LPCBYTE>(&dwData), reinterpret_cast<LPCBYTE>(&dwData + 1)),
|
||||||
COpRegValueSingle(hKeyRoot, pszKeyName, pszValueName, iTicks)
|
COpRegValueSingle(hKeyRoot, pszKeyName, pszValueName, iTicks)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -470,7 +470,7 @@ COpRegValueCreate::COpRegValueCreate(HKEY hKeyRoot, LPCWSTR pszKeyName, LPCWSTR
|
|||||||
|
|
||||||
COpRegValueCreate::COpRegValueCreate(HKEY hKeyRoot, LPCWSTR pszKeyName, LPCWSTR pszValueName, LPCWSTR pszData, int iTicks) :
|
COpRegValueCreate::COpRegValueCreate(HKEY hKeyRoot, LPCWSTR pszKeyName, LPCWSTR pszValueName, LPCWSTR pszData, int iTicks) :
|
||||||
m_dwType(REG_SZ),
|
m_dwType(REG_SZ),
|
||||||
m_sData(pszData),
|
m_binData(reinterpret_cast<LPCBYTE>(pszData), reinterpret_cast<LPCBYTE>(pszData + wcslen(pszData) + 1)),
|
||||||
COpRegValueSingle(hKeyRoot, pszKeyName, pszValueName, iTicks)
|
COpRegValueSingle(hKeyRoot, pszKeyName, pszValueName, iTicks)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -478,7 +478,7 @@ COpRegValueCreate::COpRegValueCreate(HKEY hKeyRoot, LPCWSTR pszKeyName, LPCWSTR
|
|||||||
|
|
||||||
COpRegValueCreate::COpRegValueCreate(HKEY hKeyRoot, LPCWSTR pszKeyName, LPCWSTR pszValueName, DWORDLONG qwData, int iTicks) :
|
COpRegValueCreate::COpRegValueCreate(HKEY hKeyRoot, LPCWSTR pszKeyName, LPCWSTR pszValueName, DWORDLONG qwData, int iTicks) :
|
||||||
m_dwType(REG_QWORD),
|
m_dwType(REG_QWORD),
|
||||||
m_qwData(qwData),
|
m_binData(reinterpret_cast<LPCBYTE>(&qwData), reinterpret_cast<LPCBYTE>(&qwData + 1)),
|
||||||
COpRegValueSingle(hKeyRoot, pszKeyName, pszValueName, iTicks)
|
COpRegValueSingle(hKeyRoot, pszKeyName, pszValueName, iTicks)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -515,33 +515,7 @@ HRESULT COpRegValueCreate::Execute(CSession *pSession)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set the registry value.
|
// Set the registry value.
|
||||||
switch (m_dwType) {
|
lResult = ::RegSetValueExW(hKey, m_sValueName.c_str(), 0, m_dwType, m_binData.data(), static_cast<DWORD>(m_binData.size() * sizeof(BYTE)));
|
||||||
case REG_SZ:
|
|
||||||
case REG_EXPAND_SZ:
|
|
||||||
case REG_LINK:
|
|
||||||
lResult = ::RegSetValueExW(hKey, m_sValueName.c_str(), 0, m_dwType, (const BYTE*)m_sData.c_str(), static_cast<DWORD>((m_sData.length() + 1) * sizeof(WCHAR))); break;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case REG_BINARY:
|
|
||||||
lResult = ::RegSetValueExW(hKey, m_sValueName.c_str(), 0, m_dwType, m_binData.data(), static_cast<DWORD>(m_binData.size() * sizeof(BYTE))); break;
|
|
||||||
|
|
||||||
case REG_DWORD_LITTLE_ENDIAN:
|
|
||||||
case REG_DWORD_BIG_ENDIAN:
|
|
||||||
lResult = ::RegSetValueExW(hKey, m_sValueName.c_str(), 0, m_dwType, (const BYTE*)&m_dwData, sizeof(DWORD)); break;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case REG_MULTI_SZ:
|
|
||||||
lResult = ::RegSetValueExW(hKey, m_sValueName.c_str(), 0, m_dwType, (const BYTE*)m_szData.data(), static_cast<DWORD>(m_szData.size() * sizeof(WCHAR))); break;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case REG_QWORD_LITTLE_ENDIAN:
|
|
||||||
lResult = ::RegSetValueExW(hKey, m_sValueName.c_str(), 0, m_dwType, (const BYTE*)&m_qwData, sizeof(DWORDLONG)); break;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
lResult = ERROR_UNSUPPORTED_TYPE;
|
|
||||||
}
|
|
||||||
|
|
||||||
::RegCloseKey(hKey);
|
::RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user