Ik probeer recursive een specifieke "value" onder verschillende registry keys uit te lezen. Dat gaat bijna perfect....
Regedit formaat:
De registry key:
HKLM\\Software\\MyApplication\\1234567\\Static
De registry data onder Static:
Name, Type, Value
(Default) , REG_SZ, "C:\program files\myapp\test.dll"
"ThreadingModel" , REG_SZ, "Both"
Na enig puzzelen krijg ik de volgende output:
HKLM\\Software\\MyApplication\\1234567\\Static
C:\program files\myapp\test.dll
Probleem:
Ik wil alleen output printen als de waarde een DLL is maar het print nu ook andere extensies. Dus ik dacht: file extension filter/string match.
Regel 43: Console.WriteLine werkt met een object voor zover ik MSDN begrijp.
Enige tips hoe ik dit ombouw zodat ik de string extensie kan testen?
(In Python liep ik weer op een ander probleem stuk dus nu toch maar een post aangemaakt.)
Code
Ik heb main weg gelaten, die geeft alleen de root key mee en print help info. Het gaat om de functie "PrintKeyValues".
Regedit formaat:
De registry key:
HKLM\\Software\\MyApplication\\1234567\\Static
De registry data onder Static:
Name, Type, Value
(Default) , REG_SZ, "C:\program files\myapp\test.dll"
"ThreadingModel" , REG_SZ, "Both"
Na enig puzzelen krijg ik de volgende output:
HKLM\\Software\\MyApplication\\1234567\\Static
C:\program files\myapp\test.dll
Probleem:
Ik wil alleen output printen als de waarde een DLL is maar het print nu ook andere extensies. Dus ik dacht: file extension filter/string match.
Regel 43: Console.WriteLine werkt met een object voor zover ik MSDN begrijp.
Enige tips hoe ik dit ombouw zodat ik de string extensie kan testen?
(In Python liep ik weer op een ander probleem stuk dus nu toch maar een post aangemaakt.)
Code
Ik heb main weg gelaten, die geeft alleen de root key mee en print help info. Het gaat om de functie "PrintKeyValues".
C#:
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
| public static void SearchSubKeys(RegistryKey root, String searchKey) { //loop through all subkeys contained under the current key foreach (string keyname in root.GetSubKeyNames()) { try { using (RegistryKey key = root.OpenSubKey(keyname)) { if (keyname == searchKey) PrintKeyValues(key); SearchSubKeys(key, searchKey); } } catch (Exception) { //Ignore for example } } } public static void PrintKeyValues(RegistryKey key) { //***** Original code: //Console.WriteLine("Registry key found: {0} contains {1} values", key.Name, key.ValueCount); //+++++ Modified: only print key name Console.WriteLine("{0}", key.Name, key.ValueCount); foreach (string valuename in key.GetValueNames()) { if (key.GetValue(valuename) is String) { //***** original code: (format (Reg_NAME) and (Reg_VALUE) //Console.WriteLine(" Value : {0} = {1}", valuename, key.GetValue(valuename)); //+++++ Modified: only print DLL lines //bool endsInPeriod = valuename.EndsWith(".dll"); //if (endsInPeriod) //+++++ Modified: Skip 0 (Reg_NAME) Only print 2nd (Reg_VALUE) and break as we only need the first value Console.WriteLine("{1}", valuename, key.GetValue(valuename)); break; } } } |
This signature has been taken down by the Dutch police in the course of an international lawenforcement operation.