File: Registry.java

package info (click to toggle)
tomcat7 7.0.56-3%2Bdeb8u11
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 35,688 kB
  • ctags: 41,823
  • sloc: java: 249,464; xml: 51,553; jsp: 3,037; sh: 1,361; perl: 269; makefile: 195
file content (233 lines) | stat: -rw-r--r-- 8,526 bytes parent folder | download | duplicates (13)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
/*
 *  Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You under the Apache License, Version 2.0
 *  (the "License"); you may not use this file except in compliance with
 *  the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package org.apache.tomcat.jni;

/** Windows Registy support
 *
 * @author Mladen Turk
 */
public class Registry {

    /* Registry Enums */
    public static final int HKEY_CLASSES_ROOT       = 1;
    public static final int HKEY_CURRENT_CONFIG     = 2;
    public static final int HKEY_CURRENT_USER       = 3;
    public static final int HKEY_LOCAL_MACHINE      = 4;
    public static final int HKEY_USERS              = 5;

    public static final int KEY_ALL_ACCESS          = 0x0001;
    public static final int KEY_CREATE_LINK         = 0x0002;
    public static final int KEY_CREATE_SUB_KEY      = 0x0004;
    public static final int KEY_ENUMERATE_SUB_KEYS  = 0x0008;
    public static final int KEY_EXECUTE             = 0x0010;
    public static final int KEY_NOTIFY              = 0x0020;
    public static final int KEY_QUERY_VALUE         = 0x0040;
    public static final int KEY_READ                = 0x0080;
    public static final int KEY_SET_VALUE           = 0x0100;
    public static final int KEY_WOW64_64KEY         = 0x0200;
    public static final int KEY_WOW64_32KEY         = 0x0400;
    public static final int KEY_WRITE               = 0x0800;

    public static final int REG_BINARY              = 1;
    public static final int REG_DWORD               = 2;
    public static final int REG_EXPAND_SZ           = 3;
    public static final int REG_MULTI_SZ            = 4;
    public static final int REG_QWORD               = 5;
    public static final int REG_SZ                  = 6;

     /**
     * Create or open a Registry Key.
     * @param name Registry Subkey to open
     * @param root Root key, one of HKEY_*
     * @param sam Access mask that specifies the access rights for the key.
     * @param pool Pool used for native memory allocation
     * @return Opened Registry key
     */
    public static native long create(int root, String name, int sam, long pool)
        throws Error;

     /**
     * Opens the specified Registry Key.
     * @param name Registry Subkey to open
     * @param root Root key, one of HKEY_*
     * @param sam Access mask that specifies the access rights for the key.
     * @param pool Pool used for native memory allocation
     * @return Opened Registry key
     */
    public static native long open(int root, String name, int sam, long pool)
        throws Error;

    /**
     * Close the specified Registry key.
     * @param key The Registry key descriptor to close.
     */
    public static native int close(long key);

    /**
     * Get the Registry key type.
     * @param key The Registry key descriptor to use.
     * @param name The name of the value to query
     * @return Value type or negative error value
     */
    public static native int getType(long key, String name);

    /**
     * Get the Registry value for REG_DWORD
     * @param key The Registry key descriptor to use.
     * @param name The name of the value to query
     * @return Registry key value
     */
    public static native int getValueI(long key, String name)
        throws Error;

    /**
     * Get the Registry value for REG_QWORD or REG_DWORD
     * @param key The Registry key descriptor to use.
     * @param name The name of the value to query
     * @return Registry key value
     */
    public static native long getValueJ(long key, String name)
        throws Error;

    /**
     * Get the Registry key length.
     * @param key The Registry key descriptor to use.
     * @param name The name of the value to query
     * @return Value size or negative error value
     */
    public static native int getSize(long key, String name);

    /**
     * Get the Registry value for REG_SZ or REG_EXPAND_SZ
     * @param key The Registry key descriptor to use.
     * @param name The name of the value to query
     * @return Registry key value
     */
    public static native String getValueS(long key, String name)
        throws Error;

    /**
     * Get the Registry value for REG_MULTI_SZ
     * @param key The Registry key descriptor to use.
     * @param name The name of the value to query
     * @return Registry key value
     */
    public static native String[] getValueA(long key, String name)
        throws Error;

    /**
     * Get the Registry value for REG_BINARY
     * @param key The Registry key descriptor to use.
     * @param name The name of the value to query
     * @return Registry key value
     */
    public static native byte[] getValueB(long key, String name)
        throws Error;


    /**
     * Set the Registry value for REG_DWORD
     * @param key The Registry key descriptor to use.
     * @param name The name of the value to set
     * @param val The the value to set
     * @return If the function succeeds, the return value is 0
     */
    public static native int setValueI(long key, String name, int val);

    /**
     * Set the Registry value for REG_QWORD
     * @param key The Registry key descriptor to use.
     * @param name The name of the value to set
     * @param val The the value to set
     * @return If the function succeeds, the return value is 0
     */
    public static native int setValueJ(long key, String name, long val);

    /**
     * Set the Registry value for REG_SZ
     * @param key The Registry key descriptor to use.
     * @param name The name of the value to set
     * @param val The the value to set
     * @return If the function succeeds, the return value is 0
     */
    public static native int setValueS(long key, String name, String val);

    /**
     * Set the Registry value for REG_EXPAND_SZ
     * @param key The Registry key descriptor to use.
     * @param name The name of the value to set
     * @param val The the value to set
     * @return If the function succeeds, the return value is 0
     */
    public static native int setValueE(long key, String name, String val);

     /**
     * Set the Registry value for REG_MULTI_SZ
     * @param key The Registry key descriptor to use.
     * @param name The name of the value to set
     * @param val The the value to set
     * @return If the function succeeds, the return value is 0
     */
    public static native int setValueA(long key, String name, String[] val);

     /**
     * Set the Registry value for REG_BINARY
     * @param key The Registry key descriptor to use.
     * @param name The name of the value to set
     * @param val The the value to set
     * @return If the function succeeds, the return value is 0
     */
    public static native int setValueB(long key, String name, byte[] val);

    /**
     * Enumerate the Registry subkeys
     * @param key The Registry key descriptor to use.
     * @return Array of all subkey names
     */
    public static native String[] enumKeys(long key)
        throws Error;

    /**
     * Enumerate the Registry values
     * @param key The Registry key descriptor to use.
     * @return Array of all value names
     */
    public static native String[] enumValues(long key)
        throws Error;

     /**
     * Delete the Registry value
     * @param key The Registry key descriptor to use.
     * @param name The name of the value to delete
     * @return If the function succeeds, the return value is 0
     */
    public static native int deleteValue(long key, String name);

     /**
     * Delete the Registry subkey
     * @param root Root key, one of HKEY_*
     * @param name Subkey to delete
     * @param onlyIfEmpty If true will not delete a key if
     *                    it contains any subkeys or values
     * @return If the function succeeds, the return value is 0
     */
    public static native int deleteKey(int root, String name,
                                       boolean onlyIfEmpty);


}