Merge pull request #476 from discnl/fix-registry-delete-key
Fix deletion of registry keys from alternate registry view. This didn't work due to a bug in code dynamically loading RegDeleteKeyEx().
This commit is contained in:
commit
aebd8c728b
@ -757,11 +757,10 @@ bool wxRegKey::DeleteSelf()
|
||||
#if wxUSE_DYNLIB_CLASS
|
||||
wxDynamicLibrary dllAdvapi32(wxT("advapi32"));
|
||||
// Minimum supported OS for RegDeleteKeyEx: Vista, XP Pro x64, Win Server 2008, Win Server 2003 SP1
|
||||
if(dllAdvapi32.HasSymbol(wxT("RegDeleteKeyEx")))
|
||||
typedef LONG (WINAPI *RegDeleteKeyEx_t)(HKEY, LPCTSTR, REGSAM, DWORD);
|
||||
RegDeleteKeyEx_t wxDL_INIT_FUNC_AW(pfn, RegDeleteKeyEx, dllAdvapi32);
|
||||
if (pfnRegDeleteKeyEx)
|
||||
{
|
||||
typedef LONG (WINAPI *RegDeleteKeyEx_t)(HKEY, LPCTSTR, REGSAM, DWORD);
|
||||
wxDYNLIB_FUNCTION(RegDeleteKeyEx_t, RegDeleteKeyEx, dllAdvapi32);
|
||||
|
||||
m_dwLastError = (*pfnRegDeleteKeyEx)((HKEY) m_hRootKey, m_strKey.t_str(),
|
||||
GetMSWViewFlags(m_viewMode),
|
||||
0); // This parameter is reserved and must be zero.
|
||||
|
@ -35,6 +35,7 @@ public:
|
||||
private:
|
||||
CPPUNIT_TEST_SUITE( RegConfigTestCase );
|
||||
CPPUNIT_TEST( ReadWrite );
|
||||
CPPUNIT_TEST( DeleteRegistryKeyFromRedirectedView );
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
void ReadWrite();
|
||||
@ -80,5 +81,25 @@ void RegConfigTestCase::ReadWrite()
|
||||
delete config;
|
||||
}
|
||||
|
||||
void RegConfigTestCase::DeleteRegistryKeyFromRedirectedView()
|
||||
{
|
||||
if ( !wxIsPlatform64Bit() )
|
||||
{
|
||||
// Test needs WoW64.
|
||||
return;
|
||||
}
|
||||
|
||||
// Test inside a key that's known to be redirected and is in HKCU so that
|
||||
// admin rights are not required (unlike with HKLM).
|
||||
wxRegKey key(wxRegKey::HKCU, "SOFTWARE\\Classes\\CLSID\\wxWidgetsTestKey",
|
||||
sizeof(void *) == 4
|
||||
? wxRegKey::WOW64ViewMode_64
|
||||
: wxRegKey::WOW64ViewMode_32);
|
||||
|
||||
CPPUNIT_ASSERT( key.Create() );
|
||||
CPPUNIT_ASSERT( key.DeleteSelf() );
|
||||
CPPUNIT_ASSERT( !key.Exists() );
|
||||
}
|
||||
|
||||
#endif // wxUSE_CONFIG && wxUSE_REGKEY
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user