File: RegKey.cpp

package info (click to toggle)
sleuthkit 4.12.1%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 18,608 kB
  • sloc: ansic: 143,795; cpp: 52,225; java: 37,892; xml: 2,416; python: 1,076; perl: 874; makefile: 439; sh: 184
file content (73 lines) | stat: -rwxr-xr-x 1,953 bytes parent folder | download | duplicates (2)
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
/*
** The Sleuth Kit
**
** Brian Carrier [carrier <at> sleuthkit [dot] org]
** Copyright (c) 2010-2019 Brian Carrier.  All Rights reserved
**
** This software is distributed under the Common Public License 1.0
**
*/

#include <iostream>

#include "RegKey.h"

RegKey::RegKey(std::wstring &keyName) : m_regKey(NULL), m_keyName(keyName) {
    m_numSubkeys = -1;// unknown
    m_numValues = -1; // unknown

    m_modifyTime.dwLowDateTime = 0;
    m_modifyTime.dwHighDateTime = 0;
}

RegKey::RegKey(std::wstring &keyName, long numSubkeys, long numValues) : 
    m_regKey(NULL), 
    m_keyName(keyName),
    m_numSubkeys(numSubkeys),
    m_numValues(numValues)
{
    m_modifyTime.dwLowDateTime = 0;
    m_modifyTime.dwHighDateTime = 0;
}

RegKey::~RegKey() {
    if (m_regKey != NULL) {
        delete m_regKey;
        m_regKey = NULL;
    }
}

/**
 * Initialize a RegKey object from a Rejistry::RegistryKey object.
 *
 * @param regKey a Rejistry::RegistryKey object
 * @returns 0 if initialization is successful, otherwise -1.
 */
int RegKey::initialize(const Rejistry::RegistryKey *regKey) {
    if (regKey == NULL) {
        return -1;
    }

    m_keyName = regKey->getName();
    // TODO - replace the following 2 lines when these methods are available in PR #1665
    // m_numSubkeys = regKey->getSubkeyListSize();
    // m_numValues = regKey->getValueListSize();
    m_numSubkeys = regKey->getSubkeyList().size();
    m_numValues = regKey->getValueList().size();
    uint64_t timestamp = regKey->getTimestamp();
    m_modifyTime.dwLowDateTime = (DWORD)(timestamp & 0xFFFFFFFF);
    m_modifyTime.dwHighDateTime = (DWORD)(timestamp >> 32);

    m_regKey = new Rejistry::RegistryKey(*regKey);

    return 0;
}

/**
* Print the RegKey
*/
void RegKey::print() {
    std::wcout << L"Key: " << m_keyName << std::endl;
    std::wcout << L"\t" << L"Subkeys: " << m_numSubkeys << std::endl;
    std::wcout << L"\t" << L"Values: " << m_numValues << std::endl;
}