static bool remove(const string& name) { lstring part = name.split("/"); HKEY rootKey = root(part.take(0)); string node = part.take(); string path = part.merge("\\"); if(node.empty()) return SHDeleteKeyW(rootKey, utf16_t(path)) == ERROR_SUCCESS; return SHDeleteValueW(rootKey, utf16_t(path), utf16_t(node)) == ERROR_SUCCESS; }
JNIEXPORT void JNICALL Java_org_gudy_azureus2_platform_win32_access_impl_AEWin32AccessInterface_deleteValueW( JNIEnv *env, jclass cla, jint _type, jstring _subkey_name, jstring _value_name ) { HKEY key; HKEY subkey; WCHAR subkey_name[1024]; WCHAR value_name[1024]; jstring result = NULL; key = mapHKEY( env, _type ); if ( key == NULL ){ return; } if ( !jstringToCharsW( env, _subkey_name, subkey_name, sizeof( subkey_name ))){ return; } if ( !jstringToCharsW( env, _value_name, value_name, sizeof( value_name ))){ return; } if ( RegOpenKeyW( key, subkey_name, &subkey ) == ERROR_SUCCESS ){ RegCloseKey(subkey); if ( SHDeleteValueW( key, subkey_name, value_name ) != ERROR_SUCCESS ){ throwException( env, "deleteValue", "SHDeleteValue failed" ); } } }