Резюме:
Могу ли я получить время создания, изменения и последней записи реестра, как я могу с файлами и папками?
Подробнее:
В настоящее время у меня есть настройки кода для отображения 3 атрибутов времени каталога и то же самое с файлами. Я хотел бы сделать это со значениями реестра, которые я ищу, а также. Это возможно? Если так, то как?
Пример кода:
Ниже приведены 3 сегмента, которые я использую. Каталог и заголовки файлов ниже - это просто примеры из моего уже работающего кода, который делает все, что я хочу. Я просто хотел показать, что я знаю, как получить эти атрибуты. Сегмент реестра - это очищенный код, который я использую для циклического восстановления ключей реестра (возьмите его и используйте, если хотите;)), к которому я хочу добавить атрибуты времени в вывод.
Каталог:
//print out which folders are not whitelisted
string pt = System.String.Concat("\n" + dir, "\n");
Output.AppendText(pt);
DateTime creationTimeUtc = Directory.GetCreationTimeUtc(dir);
DateTime lastWriteTimeUtc = Directory.GetLastWriteTimeUtc(dir);
DateTime lastAccessTimeUtc = Directory.GetLastAccessTimeUtc(dir);
Output.AppendText("creationTimeUtc: " + creationTimeUtc + "\n");
Output.AppendText("lastWriteTimeUtc: " + lastWriteTimeUtc + "\n");
Output.AppendText("lastAccessTimeUtc: " + lastAccessTimeUtc + "\n");
Файл:
//print out which folders are not whitelisted
string pt = System.String.Concat("\n" + file, "\n");
Output.AppendText(pt);
DateTime creationTimeUtc = File.GetCreationTimeUtc(file);
DateTime lastWriteTimeUtc = File.GetLastWriteTimeUtc(file);
DateTime lastAccessTimeUtc = File.GetLastAccessTimeUtc(file);
Output.AppendText("creationTimeUtc: " + creationTimeUtc + "\n");
Output.AppendText("lastWriteTimeUtc: " + lastWriteTimeUtc + "\n");
Output.AppendText("lastAccessTimeUtc: " + lastAccessTimeUtc + "\n");
Реестр:
//check for malware registry values
private void malwareRegCheck()
{
//lists of registries
List<string> hkey = new List<string>();
List<string> names = new List<string>();
//try
try
{
// Open HKEY_USERS
// on a remote computer.
string remoteName = host;
RegistryKey environmentKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.Users, remoteName);
//put all hkey_user entries in list
foreach (string subKeyName in environmentKey.GetSubKeyNames())
{
//add SID to hkey list
hkey.Add(subKeyName);
}
//go through the list and enumerate each one
foreach (string sid in hkey)
{
//get the subkeys of each SID under hkey
RegistryKey sids = RegistryKey.OpenRemoteBaseKey(RegistryHive.Users, remoteName).OpenSubKey(sid);
//for each id under hkey
foreach (string id in sids.GetSubKeyNames())
{
//create SID path and add to names list
string SIDpath = sid + "\\" + id;
names.Add(SIDpath);
}
}
// Close the registry key.
environmentKey.Close();
//check if reg entry is whitelisted
foreach (string fname in names)
{
//create path to check
String fullPath = "\\\\" + host + "\\" + fname;
//split file path in to parts
string[] folders = fname.Split('\\');
//get length of array
int folderlen = folders.Length;
//folder is last element in array
string folder = folders[folderlen - 1];
//if folder is whitelisted
if ((xmlmalware2reg.Contains(folder)) || (folder.Length > 6))
{
//do nothing
}
//if folder is not whitelisted
else
{
//print out which folders are not whitelisted
string pt = System.String.Concat(fullPath + ", not whitelisted\n");
Output.AppendText(pt);
}
}
}
//catch all exceptions
catch
{
}
}