winregistrywrapper.java

来自「jdic,显著提高swing性能的插件」· Java 代码 · 共 663 行 · 第 1/2 页

JAVA
663
字号
                  return setResult;        }    }    /**     * Removes a named value from the specified registry key.     * @param hKey specified windows registry folder constant     * @param subKey given sub key (not null)     * @param valueName given value name (not null)     * @return ERROR_SUCCESS if succedd, or error code if fail     */    public static int WinRegDeleteValue(int hKey, String subKey, String valueName) {        byte[] lpSubKey = stringToByteArray(subKey);        int[] openResult = RegOpenKey(hKey, lpSubKey, KEY_WRITE);        if (openResult == null) {            return -1;         }            if (openResult[ERROR_CODE] != ERROR_SUCCESS) {            return openResult[ERROR_CODE];        } else {            byte[] lpValueName = stringToByteArray(valueName);            int deleteResult = RegDeleteValue(openResult[OPENED_KEY_HANDLE],                    lpValueName);            RegCloseKey(openResult[OPENED_KEY_HANDLE]);                  return deleteResult;        }    }    /**     * Retrieves information about a specified registry key.      * @param hKey specified windows registry folder constant     * @param subKey given sub key (not null)     * @return array contain query result     */    public static int[] WinRegQueryInfoKey(int hKey, String subKey) {        byte[] lpSubKey = stringToByteArray(subKey);        int[] openResult = RegOpenKey(hKey, lpSubKey, KEY_READ);        if (openResult == null) {            return null;         }            if (openResult[ERROR_CODE] != ERROR_SUCCESS) {            return openResult;        } else {            int[] queryResult = RegQueryInfoKey(openResult[OPENED_KEY_HANDLE]);            RegCloseKey(openResult[OPENED_KEY_HANDLE]);                  return queryResult;        }    }    /**     * Enumerates subkeys of the specified registry key. The function retrieves information      * about one subkey each time it is called.      * @param hKey specified windows registry folder constant     * @param subKey given sub key (not null)     * @param subKeyIndex index of the sub key     * @param maxKeyLength max length of sub keys     * @return name of the sub key     */    public static String WinRegEnumKeyEx(int hKey, String subKey, int subKeyIndex, int maxKeyLength) {        byte[] lpSubKey = stringToByteArray(subKey);        int[] openResult = RegOpenKey(hKey, lpSubKey, KEY_READ);        if (openResult == null) {            return null;         }            if (openResult[ERROR_CODE] != ERROR_SUCCESS) {            return null;        } else {            byte[] keyBytes = RegEnumKeyEx(openResult[OPENED_KEY_HANDLE],                    subKeyIndex, maxKeyLength);            RegCloseKey(openResult[OPENED_KEY_HANDLE]);                  if (keyBytes != null) {                return byteArrayToString(keyBytes);            } else {                return null;            }        }    }    /**     * Enumerates the values for the specified registry key. The function copies one indexed      * value name and data block for the key each time it is called.      * @param hKey specified windows registry folder constant     * @param subKey given sub key (not null)     * @param valueIndex value index     * @param maxValueNameLength max length of the value name     * @return value name     */    public static String WinRegEnumValue(int hKey, String subKey, int valueIndex, int maxValueNameLength) {        byte[] lpSubKey = stringToByteArray(subKey);        int[] openResult = RegOpenKey(hKey, lpSubKey, KEY_READ);        if (openResult == null) {            return null;         }            if (openResult[ERROR_CODE] != ERROR_SUCCESS) {            return null;        } else {            byte[] valueBytes = RegEnumValue(openResult[OPENED_KEY_HANDLE],                    valueIndex, maxValueNameLength);            RegCloseKey(openResult[OPENED_KEY_HANDLE]);                  if (valueBytes != null) {                return byteArrayToString(valueBytes);            } else {                return null;            }        }    }    /**     * Enumerates all the sub keys under the specified registry key.     * @param hKey specified windows registry folder constant     * @param subKey given sub key (not null)     * @param maxKeyLength max number of sub keys     * @return a array containing name of the sub keys     */      public static String[] WinRegGetSubKeys(int hKey, String subKey, int maxKeyLength) {        byte[] lpSubKey = stringToByteArray(subKey);        int[] openResult = RegOpenKey(hKey, lpSubKey, KEY_READ);        if (openResult == null) {            return null;         }            if (openResult[ERROR_CODE] != ERROR_SUCCESS) {            return null;        } else {            int[] queryResult = RegQueryInfoKey(openResult[OPENED_KEY_HANDLE]);            int subKeysNum = queryResult[SUBKEYS_NUMBER];            if (subKeysNum == 0) {                RegCloseKey(openResult[OPENED_KEY_HANDLE]);                return null;            } else {                String[] keyStrings = new String[subKeysNum];                byte[] keyBytes;                       for (int subKeyIndex = 0; subKeyIndex < subKeysNum; subKeyIndex++) {                    keyBytes = RegEnumKeyEx(openResult[OPENED_KEY_HANDLE],                            subKeyIndex, maxKeyLength);                    keyStrings[subKeyIndex] = byteArrayToString(keyBytes);                }                RegCloseKey(openResult[OPENED_KEY_HANDLE]);                    return keyStrings;            }        }    }      /**     * Enumerates all the values under the specified registry key.     * @param hKey specified windows registry folder constant     * @param subKey given sub key (not null)     * @param maxValueLength max number of values     * @return a string array containing the name of each value     */      public static String[] WinRegGetValues(int hKey, String subKey, int maxValueLength) {        byte[] lpSubKey = stringToByteArray(subKey);        int[] openResult = RegOpenKey(hKey, lpSubKey, KEY_READ);            if (openResult == null) {            return null;         }            if (openResult[ERROR_CODE] != ERROR_SUCCESS) {            return null;        } else {            int[] queryResult = RegQueryInfoKey(openResult[OPENED_KEY_HANDLE]);            int valuesNum = queryResult[VALUES_NUMBER];            if (valuesNum == 0) {                RegCloseKey(openResult[OPENED_KEY_HANDLE]);                return null;            } else {                String[] valueStrings = new String[valuesNum];                byte[] valueBytes;                      for (int valueIndex = 0; valueIndex < valuesNum; valueIndex++) {                    valueBytes = RegEnumValue(openResult[OPENED_KEY_HANDLE],                            valueIndex, maxValueLength);                    valueStrings[valueIndex] = byteArrayToString(valueBytes);                }                RegCloseKey(openResult[OPENED_KEY_HANDLE]);                        return valueStrings;            }         }    }      /**     * Checks whether the specified registry key exsists in the registry.     * @param hKey specified windows registry folder constant     * @param subKey given sub key (not null)     * @return ERROR_SUCCESS if succedd, or error code if fail     */      public static int WinRegSubKeyExist(int hKey, String subKey) {        byte[] lpSubKey = stringToByteArray(subKey);        int[] openResult = RegOpenKey(hKey, lpSubKey, KEY_READ);        if (openResult == null) {            return ERROR_ITEM_NOTEXIST;         }        if (openResult[ERROR_CODE] != ERROR_SUCCESS) {            return ERROR_ITEM_NOTEXIST;        } else {            RegCloseKey(openResult[OPENED_KEY_HANDLE]);                return ERROR_ITEM_EXIST;        }    }      /**     * Checks whether the specified value exsists in the specified registry key.     * @param hKey specified windows registry folder constant     * @param subKey given sub key (not null)     * @param valueName given value name (not null)     * @return ERROR_ITEM_EXIST if the value exists under given sub key     */      public static int WinRegValueExist(int hKey, String subKey, String valueName) {        if (subKey.trim().equals("")) {            return ERROR_ITEM_NOTEXIST;        }            byte[] lpSubKey = stringToByteArray(subKey);        int[] openResult = RegOpenKey(hKey, lpSubKey, KEY_READ);        if (openResult == null) {            return ERROR_ITEM_NOTEXIST;         }            if (openResult[ERROR_CODE] != ERROR_SUCCESS) {            return ERROR_ITEM_NOTEXIST;        } else {            byte[] lpValueName = stringToByteArray(valueName);            byte[] valueBytes = RegQueryValueEx(openResult[OPENED_KEY_HANDLE],                    lpValueName);            RegCloseKey(openResult[OPENED_KEY_HANDLE]);                  if (valueBytes == null) {                return ERROR_ITEM_NOTEXIST;            } else {                 if ((valueBytes.length == 1) && (valueBytes[0] == 0) && (valueName.equals("")) ){                    return ERROR_ITEM_NOTEXIST;                } else {                    return ERROR_ITEM_EXIST;                }            }        }    }      /**     * Determines the MIME type from the data provided.      * Now the input data comes from the specified URL object.     * @param url given url (not null)     * @return correponding mime type information, or null if couldn't     */    public static String WinFindMimeFromData(URL url) {        byte[] urlBytes;        byte[] result;        String urlString = url.toString();            urlBytes = stringToByteArray(urlString);                result = FindMimeFromData(urlBytes, null);        if (result != null) {            return byteArrayToString(result);        } else {            byte[] dataBytes = new byte[256];                  DataInputStream inStream = null;            try {                inStream = new DataInputStream(url.openStream());                // Read a buffer size of 256 bytes of data to sniff the mime type.                inStream.read(dataBytes, 0, 256);                inStream.close();            } catch (IOException e) {                // Cannot open the connection to the URL, return.                return null;            } finally {                // No matter what happens, always close streams already opened.                if (inStream != null) {                    try {                        inStream.close();                    } catch (IOException e) {                    }                }            }                        result = FindMimeFromData(null, dataBytes);            if (result != null) {                return byteArrayToString(result);            } else {                 return null;            }        }    }      /**     * Expands environment-variable strings and replaces them with their defined values.     * <P>     * E.g: "%SystemRoot%\\system32\\NOTEPAD.EXE %1" -> "C:\\system32\\NOTEPAD.EXE %1"     * </P>     * @param envVariable given environment variable (not null)     * @return expression after environment variable replacement     */    public static String WinExpandEnvironmentStrings(String envVariable) {        byte[] envVariableBytes = stringToByteArray(envVariable);        byte[] resultBytes = ExpandEnvironmentStrings(envVariableBytes);            return (byteArrayToString(resultBytes));    }  }  

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?