Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
hccr = RegistryKey.OpenRemoteBaseKey(RegistryHive.ClassesRoot, PcName)
На следующем этапе осуществляется поиск созданных CLSID-папок сценарием. Для того чтобы они отличались от других ярлыков, необходимо внутрь CLSID добавить какой-либо флаг: параметр Flag со значением 1. Дело в том, что разные программы, такие как Nero 7, Active Sync, и другие программы для связи компьютера с сотовым телефоном, тоже создают различные объекты в папке «Мой Компьютер». Наша задача не повредить.
Целесообразно создавать флаг в CLSID, находящемся в разделе HKLMSoftwareMicrosoftCurrentVersionExplorerMyComputerNameSpace (см. листинг 4). В приведенном листинге для получения доступа к папке используется функция OpenSubKey(), аргумент которой – путь в реестре к анализируемой папке. Список подпапок получают с помощью свойства GetSubKeyNames, которое возвращает соответствующий массив данных. Для чтения параметра вызывают функцию GetValue(Flag).
Листинг 4. Определение списка значений CLSID, созданных программным способом
Public Key1 As String = "SOFTWAREMicrosoftWindowsCurrentVersionExplorerMyComputerNameSpace"
Public Key2 As String = "clsid"
…
Dim i As Integer = 0
Dim Guids As String()
Dim a As String() = hklm.OpenSubKey(Key1).GetSubKeyNames
For Each CLSID As String In a
Dim c As RegistryKey = hklm.OpenSubKey(Key1).OpenSubKey(CLSID)
Dim d As String = c.GetValue(FlagKey)
If StrComp(UCase(d), UCase(FlagValue)) = 0 Then
ReDim Preserve Guids(i)
Guids(i) = CLSID
i += 1
End If
Next
После того как список определен, целесообразно удалить все определенные процедурой подпапки и создать новые. Это связано с тем, что пути могут измениться, для того чтобы упростить листинг, рекомендуется это сделать.
Осталось рассмотреть две процедуры – удаление ветви реестра и запись параметров. Удаление параметров происходит в цикле (см. листинг 5). Будьте внимательны и удаляйте обе ветви реестра, которые создает сценарий. Не создавайте из реестра помойку – в конечном итоге это пагубно скажется на работоспособности рабочей станции.
Листинг 5. Удаление ветви реестра
For Each GUID As String In DetectGUID()
hklm.OpenSubKey(Key1, True).DeleteSubKeyTree(GUID)
hccr.OpenSubKey(Key2, True).DeleteSubKeyTree(GUID)
Next
Для записи значений в реестр используется функция SetValue. При записи данных есть одна тонкость. Все значения имеют тип данных REG_SZ, и только один – REG_BINARY. Запись бинарных данных осуществляется из массива, элементы которого – бинарные числа (см. листинг 6).
Листинг 6. Запись данных в реестр
hklm.OpenSubKey(Key1, True).CreateSubKey(RegistryPath).SetValue(FlagKey, FlagValue, RegistryValueKind.String)
hccr.OpenSubKey(Key2, True).CreateSubKey(RegistryPath).SetValue("", GroupValues(0))
…
Dim temp_array As Byte() = {0, 1, 0, 160}