Vraag : Registratie, Winlogon, fouten KEY_WOW64_64KEY

Dit drijft me NUTS!

In Vensters 7 x64 I behoefte om, programatically, shell van Vensters van mijn toepassing, terug naar ontdekkingsreiziger, dan terug naar mijn te veranderen. Als u een explination in verband met waarom enkel ask.

Anyway wilt: Fundamenteel wil ik deze sleutel openen:

1:
van de 
HKLM \ SOFTWARE \ Microsoft \ Vensters NT \ CurrentVersion \ Winlogon \


I doen dit met deze code:

1:
2:
3:
4:
5:
With TRegistry.Create 
      begin
      Probeer
        RootKey: = HKEY_LOCAL_MACHINE;
        Als OpenKey (de „Vensters NT \ CurrentVersion \ Winlogon van de SOFTWARE \ Microsoft \“, Vals) toen
eind 


But I hier stijgen:
1:
2:
HKEY_LOCAL_MACHINE \ de Vensters NT \ CurrentVersion \ Winlogon van de SOFTWARE \ Wow6432Node \ Microsoft \


So die ik heb gedacht om de KEY_WOW64_64KEY toegangsvlag toe te voegen. Goed nu, kan ik niet tot de sleutel bij aanwijzingen all.

Any toegang hebben?

Antwoord : Registratie, Winlogon, fouten KEY_WOW64_64KEY

Hello,

Ik had ook dit probleem… zo met sommige wijzigingen en gebruikend een andere manier om tot de Registratie die van Vensters toegang te hebben (geen Registry.pas gebruiken) ik heb zonder problemen… gedaan

De code is hieronder een litghtweightvervanging voor Registry.pas met wijzigingen aan het werk met Vlaggen KEY_WOW64_64KEY/KEY_WOW64_32KEY

Basis gebruik in uw geval

Vestiging uw programma als Shell
[code] WinRegSetString (HKEY_LOCAL_MACHINE, Vensters NT \ CurrentVersion \ Winlogon \ Shell“, „YourProgram.exe“ de „van de SOFTWARE \ Microsoft \, Waar); [/code]

als u een „Blackslash“ bij de sleutel zet als (de „Vensters NT \ CurrentVersion \ Winlogon \ Shell \ van de SOFTWARE \ Microsoft \“) het zal tot Nieuw „Zeer belangrijk“ geroepen Shell… zonder blackslash leiden het tot een Waarde genoemd Shell… het zelfde voor alle functies toegang zal hebben

Terugkeer naar de Vensters Shell
[code] WinRegSetString (HKEY_LOCAL_MACHINE, Vensters NT \ CurrentVersion \ Winlogon \ Shell“, „Explorer.exe“ de „van de SOFTWARE \ Microsoft \, Waar); [/code]

Het lezen van huidige shell
[code] var
 szBuff: Koord;
begin
 WinRegGetString (HKEY_LOCAL_MACHINE, de „Vensters NT \ CurrentVersion \ Winlogon \ Shell van de SOFTWARE \ Microsoft \“, szBuff, Waar);
  ShowMessage („„“ + szBuff + „„“); [/code]

De hoop het helpt u!
Achting,
Carlos

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:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
eenheid UTILS_Reg;

interface

gebruik
  Vensters,
  SysUtils,
  Klassen;

  functie WinRegConnect (MachineName: Koord; RootKey: HKEY; var RemoteKey: HKEY): van Boole;
  functie WinRegDisconnect (RemoteKey: HKEY): van Boole;
  functie WinRegValueExists (RootKey: HKEY; Naam: Koord; Wow64: Van Boole): van Boole;
  functie WinRegGetValueType (RootKey: HKEY; Naam: Koord; var Waarde: Hoofd; Wow64: Van Boole): van Boole;
  functie WinRegKeyExists (RootKey: HKEY; Naam: Koord; Wow64: Van Boole): van Boole;
  functie WinRegDelValue (RootKey: HKEY; Naam: Koord; Wow64: Van Boole): van Boole;
  functie WinRegDelKey (RootKey: HKEY; Naam: Koord; Wow64: Van Boole): van Boole;
  functie WinRegEnum (hRootKey: HKEY; szKey: Koord; Buffer: TStringList; bKeys: Van Boole; Wow64: Van Boole): Van Boole;
  functie WinRegSetString (RootKey: HKEY; Naam: Koord; Waarde: Koord; Wow64: Van Boole): van Boole;
  functie WinRegSetMultiString (RootKey: HKEY; Naam: Koord; Waarde: Koord; Wow64: Van Boole): van Boole;
  functie WinRegSetExpandString (RootKey: HKEY; Naam: Koord; Waarde: Koord; Wow64: Van Boole): van Boole;
  functie WinRegSetDword (RootKey: HKEY; Naam: Koord; Waarde: Hoofd; Wow64: Van Boole): van Boole;
  functie WinRegSetBinary (RootKey: HKEY; Naam: Koord; Waarde: Serie van Byte; Wow64: Van Boole): van Boole;
  functie WinRegGetString (RootKey: HKEY; Naam: Koord; Var Waarde: Koord; Wow64: Van Boole): van Boole;
  functie WinRegGetMultiString (RootKey: HKEY; Naam: Koord; Var Waarde: Koord; Wow64: Van Boole): van Boole;
  functie WinRegGetExpandString (RootKey: HKEY; Naam: Koord; Var Waarde: Koord; Wow64: Van Boole): van Boole;
  functie WinRegGetDWORD (RootKey: HKEY; Naam: Koord; Var Waarde: Hoofd; Wow64: Van Boole): van Boole;
  functie WinRegGetBinary (RootKey: HKEY; Naam: Koord; Var Waarde: Koord; Wow64: Van Boole): van Boole;
  functie Binary2DateTime (RootKey: HKEY; Naam: Koord; var Waarde: TDateTime; Wow64: Van Boole): Van Boole;
  functie DateTime2Binary (RootKey: HKEY; Naam: Koord; var Waarde: TDateTime; Wow64: Van Boole): Van Boole;
  functie Binary2Integer (RootKey: HKEY; Naam: Koord; var Waarde: Geheel; Wow64: Van Boole): Van Boole;
  functie Integer2Binary (RootKey: HKEY; Naam: Koord; var Waarde: Geheel; Wow64: Van Boole): Van Boole;

implementatie

functie IsWow64: Van Boole;
type
  TIsWow64Process = functie (// Type van IsWow64Process API F-N
    Handvat: Windows.THandle; var Onderzoek: Windows.BOOL
  ): Windows.BOOL; stdcall;
var
  IsWow64Result: Windows.BOOL;      // Resultaat van IsWow64Process
  IsWow64Process: TIsWow64Process;  // IsWow64Process F-N verwijzing
begin
  // probeert om vereiste functie van kernel32 te laden
  IsWow64Process: = Windows.GetProcAddress (
    Windows.GetModuleHandle („kernel32.dll“), „IsWow64Process“
  );
  indien dan Toegewezen (IsWow64Process)
  begin
    // de Functie wordt uitgevoerd: vraag het
    als niet IsWow64Process (
      Windows.GetCurrentProcess, IsWow64Result
    ) toen
      hef SysUtils.Exception.Create op („IsWow64: slecht proceshandvat“);
    // het resultaat van de Terugkeer van functie
    Resultaat: = IsWow64Result;
  eind
  anders
    // uitgevoerde niet Functie: kan niet op Wow64 lopen
    Resultaat: = Vals;
eind;

functie Binary2DateTime (RootKey: HKEY; Naam: Koord; var Waarde: TDateTime; Wow64: Van Boole): Van Boole;
var
  dtBuff: TDateTime;
  dtBytes: serie [1..8] van absolute dtBuff van de Byte;
  szBin: koord;
  i: geheel;
begin
  Resultaat: = WinRegGetBinary (RootKey, Naam, szBin, Wow64);

  als Resultaat toen
  Resultaat: = Lengte (szBin) = 8;

  als Resultaat toen
  begin
    voor I: = 1 tot 8
    dtBytes [I]: = ord (szBin [I]);
    Waarde: = dtBuff;
  eind;
eind;

functie DateTime2Binary (RootKey: HKEY; Naam: Koord; var Waarde: TDateTime; Wow64: Van Boole): Van Boole;
var
  dtBuff: TDateTime;
  dtBytes: serie [1..8] van byte absolute dtBuff;
begin
  dtBuff: = Waarde;
  Resultaat: = WinRegSetBinary (RootKey, Naam, dtBytes, Wow64);
eind;

functie Binary2Integer (RootKey: HKEY; Naam: Koord; var Waarde: Geheel; Wow64: Van Boole): Van Boole;
var
  iBuff: Geheel;
  dtBytes: serie [1..4] van absolute iBuff van de Byte;
  szBin: koord;
  i: geheel;
begin
  Resultaat: = WinRegGetBinary (RootKey, Naam, szBin, Wow64);

  als Resultaat toen
  Resultaat: = Lengte (szBin) = 4;

  als Resultaat toen
  begin
    voor I: = 1 tot 4
    dtBytes [I]: = ord (szBin [I]);
    Waarde: = iBuff;
  eind;
eind;

functie Integer2Binary (RootKey: HKEY; Naam: Koord; var Waarde: Geheel; Wow64: Van Boole): Van Boole;
var
  iBuff: Geheel;
  dtBytes: serie [1..4] van absolute iBuff van de Byte;
begin
  iBuff: = Waarde;
  Resultaat: = WinRegSetBinary (RootKey, Naam, dtBytes, Wow64);
eind;

functie LastPos (Naald: Klusje; Hooiberg: Koord): geheel;
begin
  voor Resultaat: downto 1 = van de lengte (Hooiberg)
  als Hooiberg [Resultaat] = Naald toen
  Onderbreking;
eind;

functie WinRegConnect (MachineName: Koord; RootKey: HKEY; var RemoteKey: HKEY): van Boole;
begin
  Resultaat: = (RegConnectRegistry (PChar (MachineName), RootKey, RemoteKey) = ERROR_SUCCESS);
eind;

functie WinRegDisconnect (RemoteKey: HKEY): van Boole;
begin
  Resultaat: = (RegCloseKey (RemoteKey) = ERROR_SUCCESS);
eind;

functie RegSetValue (RootKey: HKEY; Naam: Koord; ValType: Hoofd; PVal: Wijzer; ValSize: Hoofd; Wow64: Van Boole): van Boole;
var
  SubKey: Koord;
  n: geheel;
  dispo: DWORD;
  hTemp: HKEY;
  bSuccess: Van Boole;
  _hKey: Hoofd;
begin
  Resultaat: = Vals;
  
  n: = LastPos („\“, Naam);
  als n > 0 toen
  begin
    SubKey: = Exemplaar (Naam, 1, n - 1);

    als Wow64 en IsWow64 toen
    _hKey: = KEY_WRITE of KEY_WOW64_64KEY anders
    als IsWow64 en niet Wow64 toen
    _hKey: = KEY_WRITE of KEY_WOW64_32KEY anders
    _hKey: = KEY_WRITE;

    bSuccess: = RegCreateKeyEx (RootKey, PChar (SubKey), 0, nul, REG_OPTION_NON_VOLATILE, _hKey, nul, hTemp, @dispo) = ERROR_SUCCESS;

    als bSuccess toen
    begin
      SubKey: = Exemplaar (Naam, n + 1, Lengte (Naam) - n);
      Resultaat: = (RegSetValueEx (hTemp, PChar (SubKey), 0, ValType, PVal, ValSize) = ERROR_SUCCESS);
      RegCloseKey (hTemp);
    eind;
  eind;
eind;

functie RegGetValue (RootKey: HKEY; Naam: Koord; ValType: Hoofd; var PVal: Wijzer;
  var ValSize: Hoofd; Wow64: Van Boole): van Boole;
var
  SubKey: Koord;
  n: geheel;
  MyValType: DWORD;
  hTemp: HKEY;
  Buf: Wijzer;
  BufSize: Hoofd;
  _hKey: Hoofd;
begin
  Resultaat: = Vals;
  n: = LastPos („\“, Naam);
  als n > 0 toen
  begin
    SubKey: = Exemplaar (Naam, 1, n - 1);

    als Wow64 en IsWow64 toen
    _hKey: = KEY_READ of KEY_WOW64_64KEY anders
    als IsWow64 en niet Wow64 toen
    _hKey: = KEY_READ of KEY_WOW64_32KEY anders
    _hKey: = KEY_READ;

    als RegOpenKeyEx (RootKey, PChar (SubKey), 0, _hKey, hTemp) = ERROR_SUCCESS toen
    begin
      SubKey: = Exemplaar (Naam, n + 1, Lengte (Naam) - n);
      als RegQueryValueEx (hTemp, @BufSize PChar (SubKey), nul, @MyValType, nul,) = ERROR_SUCCESS toen
      begin
        GetMem (Buf, BufSize);
        als RegQueryValueEx (hTemp, @BufSize PChar (SubKey), nul, @MyValType, Buf,) = ERROR_SUCCESS toen
        begin
          als ValType = MyValType toen
          begin
            PVal: = Buf;
            ValSize: = BufSize;
            Resultaat: = Waar;
          eind
          anders
          FreeMem (Buf);
        eind
        anders
        FreeMem (Buf);
      eind;
      RegCloseKey (hTemp);
    eind;
  eind;
eind;

functie WinRegValueExists (RootKey: HKEY; Naam: Koord; Wow64: Van Boole): van Boole;
var
  SubKey: Koord;
  n: geheel;
  hTemp: HKEY;
  _hKey: T-hendel;
begin
  Resultaat: = Vals;
  n: = LastPos („\“, Naam);
  als n > 0 toen
  begin
    SubKey: = Exemplaar (Naam, 1, n - 1);

    als Wow64 en IsWow64 toen
    _hKey: = KEY_READ of KEY_WOW64_64KEY anders
    als IsWow64 en niet Wow64 toen
    _hKey: = KEY_READ of KEY_WOW64_32KEY anders
    _hKey: = KEY_READ;

    als RegOpenKeyEx (RootKey, PChar (SubKey), 0, _hKey, hTemp) = ERROR_SUCCESS toen
    begin
      SubKey: = Exemplaar (Naam, n + 1, Lengte (Naam) - n);
      Resultaat: = (RegQueryValueEx (hTemp, PChar (SubKey), nul, nul, nul, nul) = ERROR_SUCCESS);
      RegCloseKey (hTemp);
    eind;
  eind;
eind;

functie WinRegGetValueType (RootKey: HKEY; Naam: Koord; var Waarde: Hoofd; Wow64: Van Boole): van Boole;
var
  SubKey: Koord;
  n: geheel;
  hTemp: HKEY;
  ValType: Hoofd;
  _hKey: Hoofd;
begin
  Resultaat: = Vals;
  Waarde: = REG_NONE;
  n: = LastPos („\“, Naam);
  als n > 0 toen
  begin
    SubKey: = Exemplaar (Naam, 1, n - 1);

    als Wow64 en IsWow64 toen
    _hKey: = KEY_READ of KEY_WOW64_64KEY anders
    als IsWow64 en niet Wow64 toen
    _hKey: = KEY_READ of KEY_WOW64_32KEY anders
    _hKey: = KEY_READ;

    als (RegOpenKeyEx (RootKey, PChar (SubKey), 0, _hKey, hTemp) = ERROR_SUCCESS) toen
    begin
      SubKey: = Exemplaar (Naam, n + 1, Lengte (Naam) - n);
      Resultaat: = (RegQueryValueEx (hTemp, PChar (SubKey), nul, @ValType, nul, nul) = ERROR_SUCCESS);
      als Resultaat toen
      Waarde: = ValType;
      RegCloseKey (hTemp);
    eind;
  eind;
eind;

functie WinRegKeyExists (RootKey: HKEY; Naam: Koord; Wow64: Van Boole): van Boole;
var
  SubKey: Koord;
  n: geheel;
  hTemp: HKEY;
  _hKey: Hoofd;
begin
  Resultaat: = Vals;
  n: = LastPos („\“, Naam);
  als n > 0 toen
  begin
    SubKey: = Exemplaar (Naam, 1, n - 1);

    als Wow64 en IsWow64 toen
    _hKey: = KEY_READ of KEY_WOW64_64KEY anders
    als IsWow64 en niet Wow64 toen
    _hKey: = KEY_READ of KEY_WOW64_32KEY anders
    _hKey: = KEY_READ;

    als RegOpenKeyEx (RootKey, PChar (SubKey), 0, _hKey, hTemp) = ERROR_SUCCESS toen
    begin
      Resultaat: = Waar;
      RegCloseKey (hTemp);
    eind;
  eind;
eind;

functie WinRegDelValue (RootKey: HKEY; Naam: Koord; Wow64: Van Boole): van Boole;
var
  SubKey: Koord;
  n: geheel;
  hTemp: HKEY;
  _hKey: Hoofd;
begin
  Resultaat: = Vals;
  n: = LastPos („\“, Naam);
  als n > 0 toen
  begin
    SubKey: = Exemplaar (Naam, 1, n - 1);

    als Wow64 en IsWow64 toen
    _hKey: = KEY_WRITE of KEY_WOW64_64KEY anders
    als IsWow64 en niet Wow64 toen
    _hKey: = KEY_WRITE of KEY_WOW64_32KEY anders
    _hKey: = KEY_WRITE;

    als RegOpenKeyEx (RootKey, PChar (SubKey), 0, _hKey, hTemp) = ERROR_SUCCESS toen
    begin
      SubKey: = Exemplaar (Naam, n + 1, Lengte (Naam) - n);
      Resultaat: = (RegDeleteValue (hTemp, PChar (SubKey)) = ERROR_SUCCESS);
      RegCloseKey (hTemp);
    eind;
  eind;
eind;

functie WinRegDelKey (RootKey: HKEY; Naam: Koord; Wow64: Van Boole): van Boole;
var
  SubKey: Koord;
  n: geheel;
  hTemp: HKEY;
  _hKey: Hoofd;
begin
  Resultaat: = Vals;
  n: = LastPos („\“, Naam);
  als n > 0 toen
  begin
    SubKey: = Exemplaar (Naam, 1, n - 1);

    als Wow64 en IsWow64 toen
    _hKey: = KEY_WRITE of KEY_WOW64_64KEY anders
    als IsWow64 en niet Wow64 toen
    _hKey: = KEY_WRITE of KEY_WOW64_32KEY anders
    _hKey: = KEY_WRITE;

    als RegOpenKeyEx (RootKey, PChar (SubKey), 0, _hKey, hTemp) = ERROR_SUCCESS toen
    begin
      SubKey: = Exemplaar (Naam, n + 1, Lengte (Naam) - n);
      Resultaat: = (RegDeleteKey (hTemp, PChar (SubKey)) = ERROR_SUCCESS);
      RegCloseKey (hTemp);
    eind;
  eind;
eind;

functie WinRegEnum (hRootKey: HKEY; szKey: Koord; Buffer: TStringList; bKeys: Van Boole; Wow64: Van Boole): Van Boole;
var
  i: geheel;
  iRes: geheel;
  s: Koord;
  hTemp: HKEY;
  Buf: Wijzer;
  BufSize: Hoofd;
  _hKey: Hoofd;
begin
  Resultaat: = Vals;
  Buffer.Clear;

  als Wow64 en IsWow64 toen
  _hKey: = KEY_READ of KEY_WOW64_64KEY anders
  als IsWow64 en niet Wow64 toen
  _hKey: = KEY_READ of KEY_WOW64_32KEY anders
  _hKey: = KEY_READ;

  als RegOpenKeyEx (hRootKey, PChar (szKey), 0, _hKey, hTemp) = ERROR_SUCCESS toen
  begin
    Resultaat: = Waar;
    BufSize: = 1024;
    GetMem (buf, BufSize);
    i: = 0;
    iRes: = ERROR_SUCCESS;
    terwijl iRes = ERROR_SUCCESS 
    begin
      BufSize: = 1024;
      als bKeys toen
        iRes: = RegEnumKeyEx (hTemp, I, buf, BufSize, nul, nul, nul, nul)
      anders
        iRes: = RegEnumValue (hTemp, I, buf, BufSize, nul, nul, nul, nul);
      als iRes = ERROR_SUCCESS toen
      begin
        SetLength (s, BufSize);
        CopyMemory (@s [1], buf, BufSize);
        Buffer.Add;
        n.v. (I);
      eind;
    eind;
    FreeMem (buf);
    RegCloseKey (hTemp);
  eind;
eind;

functie WinRegSetString (RootKey: HKEY; Naam: Koord; Waarde: Koord; Wow64: Van Boole): van Boole;
begin
  Resultaat: = RegSetValue (RootKey, Naam, REG_SZ, PChar (Waarde + #0), Lengte (Waarde) + 1, Wow64);
eind;

functie WinRegSetMultiString (RootKey: HKEY; Naam: Koord; Waarde: Koord; Wow64: Van Boole): van Boole;
begin
  Resultaat: = RegSetValue (RootKey, Naam, REG_MULTI_SZ, PChar (Waarde + #0#0), Lengte (Waarde) + 2, Wow64);
eind;

functie WinRegSetExpandString (RootKey: HKEY; Naam: Koord; Waarde: Koord; Wow64: Van Boole): van Boole;
begin
  Resultaat: = RegSetValue (RootKey, Naam, REG_EXPAND_SZ, PChar (Waarde + #0), Lengte (Waarde) + 1, Wow64);
eind;

functie WinRegSetDword (RootKey: HKEY; Naam: Koord; Waarde: Hoofd; Wow64: Van Boole): van Boole;
begin
  Resultaat: = RegSetValue (RootKey, Naam, REG_DWORD, @Value, SizeOf (Hoofd), Wow64);
eind;

functie WinRegSetBinary (RootKey: HKEY; Naam: Koord; Waarde: Serie van Byte; Wow64: Van Boole): van Boole;
begin
  Resultaat: = RegSetValue (RootKey, Naam, REG_BINARY, @Value, SizeOf (Waarde), Wow64);
eind;

functie WinRegGetString (RootKey: HKEY; Naam: Koord; Var Waarde: Koord; Wow64: Van Boole): van Boole;
var
  Buf: Wijzer;
  BufSize: Hoofd;
begin
  Resultaat: = Vals;
  als RegGetValue (RootKey, Naam, REG_SZ, Buf, BufSize, Wow64) toen
  begin
    Dec (BufSize);
    SetLength (Waarde, BufSize);
    als BufSize > 0 toen
      CopyMemory (@Value [1], Buf, BufSize);
    FreeMem (Buf);
    Resultaat: = Waar;
  eind;
eind;

functie WinRegGetMultiString (RootKey: HKEY; Naam: Koord; Var Waarde: Koord; Wow64: Van Boole): van Boole;
var
  Buf: Wijzer;
  BufSize: Hoofd;
begin
  Resultaat: = Vals;
  als RegGetValue (RootKey, Naam, REG_MULTI_SZ, Buf, BufSize, Wow64) toen
  begin
    Dec (BufSize);
    SetLength (Waarde, BufSize);
    als BufSize > 0 toen
      CopyMemory (@Value [1], Buf, BufSize);
    FreeMem (Buf);
    Resultaat: = Waar;
  eind;
eind;

functie WinRegGetExpandString (RootKey: HKEY; Naam: Koord; Var Waarde: Koord; Wow64: Van Boole): van Boole;
var
  Buf: Wijzer;
  BufSize: Hoofd;
begin
  Resultaat: = Vals;
  als RegGetValue (RootKey, Naam, REG_EXPAND_SZ, Buf, BufSize, Wow64) toen
  begin
    Dec (BufSize);
    SetLength (Waarde, BufSize);
    als BufSize > 0 toen
      CopyMemory (@Value [1], Buf, BufSize);
    FreeMem (Buf);
    Resultaat: = Waar;
  eind;
eind;

functie WinRegGetDWORD (RootKey: HKEY; Naam: Koord; Var Waarde: Hoofd; Wow64: Van Boole): van Boole;
var
  Buf: Wijzer;
  BufSize: Hoofd;
begin
  Resultaat: = Vals;
  als RegGetValue (RootKey, Naam, REG_DWORD, Buf, BufSize, Wow64) toen
  begin
    CopyMemory (@Value, Buf, BufSize);
    FreeMem (Buf);
    Resultaat: = Waar;
  eind;
eind;

functie WinRegGetBinary (RootKey: HKEY; Naam: Koord; Var Waarde: Koord; Wow64: Van Boole): van Boole;
var
  Buf: Wijzer;
  BufSize: Hoofd;
begin
  Resultaat: = Vals;
  als RegGetValue (RootKey, Naam, REG_BINARY, Buf, BufSize, Wow64) toen
  begin
    SetLength (Waarde, BufSize);
    CopyMemory (@Value [1], Buf, BufSize);
    FreeMem (Buf);
    Resultaat: = Waar;
  eind;
eind;

eind.
Andere oplossingen  
 
programming4us programming4us