public List<String> readStringSubKeys(String key) {
		try {
			List<String> results = new ArrayList<>();
			OpenResult openResult = openKey(key, READ_ACCESS);
			if (openResult.mSuccess) {
				QueryResult queryResult = queryInfoKey(openResult.mHandle);
				for (int i = 0; i < queryResult.mCount; i++) {
					if (METHOD_ENUM_KEY_EX == null) {
						METHOD_ENUM_KEY_EX = getMethod(mRoot.getClass(), "WindowsRegEnumKeyEx", int.class, int.class, int.class);
					}
					byte[] name = (byte[]) METHOD_ENUM_KEY_EX.invoke(mRoot, new Object[] { openResult.mHandle, Integer.valueOf(i), Integer.valueOf(queryResult.mMaxValueLength + 1) });
					results.add(new String(name));
				}
				closeKey(openResult.mHandle);
			}
			return results;
		} catch (Exception exception) {
			Log.error(exception);
		}
		return null;
	}