www.samag.ru
Журнал «БИТ. Бизнес&Информационные технологии»      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Интеграция Open Source-решений  

Open Source в облачной среде

Облачные решения становятся всё более популярными в мире. Компании стремятся использовать их для

 Читать далее...

Автоматизация  

Нейросеть вам в руки! Как использовать ИИ для автоматизации задач

Использование ИИ для автоматизации задач помогает компании получить конкурентное преимущество, поскольку объединение

 Читать далее...

Рынок труда  

Специалист по этическому ИИ, инженер по квантовым вычислениям или аналитик по метавселенной?

Новые тенденции в развитии ИТ могут привести к возникновению новых специальностей в

 Читать далее...

Книжная полка  

Учитесь убеждать и побеждать

Издательство «БХВ», как всегда, порадовало своих читателей хорошими книжными новинками. Кроме популярных

 Читать далее...

Сетевая инфраструктура  

Как удаленная работа меняет подход к сетевой инфраструктуре?

С увеличением числа сотрудников, работающих из дома, организации сталкиваются с необходимостью создания

 Читать далее...

Мониторинг  

Какой мониторинг нужен сегодня?

По мнению экспертов ГК InfoWatch, действия сотрудников – самая распространенная причина инцидентов

 Читать далее...

Книжная полка  

Руководство для тех, кто увлечен ИИ, программированием. И дизайном

Накануне лета издательство «БХВ» выпустило книжные новинки, от которых любителям чтения будет

 Читать далее...

Мобильные приложения  

Искусственный интеллект в мобильных приложениях: возможности и перспективы

Обзор современных применений ИИ в мобильных приложениях, анализ перспектив развития этой технологии,

 Читать далее...

ИТ-образование  

Как сделать ИТ-образование эффективным?

Эксперты ИТ-отрасли отвечают на вопросы «СА». Обсуждаем ключевые аспекты для улучшения образовательных

 Читать далее...

Work-life balance  

Как айтишнику найти баланс между работой и личной жизнью?

Обсуждаем инструменты для эффективного управления временем, снижения уровня стресса и достижения гармонии. На

 Читать далее...

Книжная полка  

Всё самое нужное – под одной обложкой

Отличительная черта книжных новинок, выпущенных недавно издательством «БХВ» – это их универсальность. Не просто

 Читать далее...

ИТ-инфраструктура  

Системы мониторинга ИТ-инфраструктуры-2025

Без мониторинга ИТ-инфраструктуры не обходится ни одна компания, хотя бы потому, что

 Читать далее...

Открытое ПО  

Безопасность Open Source: рискуем или контролируем?

Компания «Кросс технолоджис» изучила, как используется ПО с открытым кодом в компаниях

 Читать далее...

Работа с нейросетью  

Скажи, есть ли у тебя AI, и я скажу, кто ты

Недавно сервис по поиску работы SuperJob выяснил, что каждый второй россиянин уже

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9835
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 9971
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 7423
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 4622
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 5449
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 5413
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 8140
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 4778
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 5028
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 9105
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 12536
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 14051
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 15801
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 10676
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 8698
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 6945
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 6054
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 4971
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 4621
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 4849
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

Друзья сайта  

 Создаем персональный набор ярлыков для каждого пользователя в папке «Мой Компьютер»

Архив номеров / 2008 / Выпуск №3 (64) / Создаем персональный набор ярлыков для каждого пользователя в папке «Мой Компьютер»

Рубрика: Администрирование /  Администрирование

ИВАН КОРОБКО

Создаём персональный набор ярлыков
для каждого пользователя в папке «Мой Компьютер»

Представьте себе: вы входите в папку «Мой Компьютер» и видите в ней кроме дисков ярлыки к приложениям, используемым в сети! О том, как реализовать эту идею, и пойдет речь.

В компьютерных сетях крупных организаций используется большое количество сетевых приложений. Задача системного администратора – обеспечить к ним удобный доступ. Как правило, для этого создают папку, обеспечивают к ней доступ из сети. Внутри нее создают ярлыки, ссылающиеся на сетевые приложения. С помощью сценария регистрации пользователей в сети подключают каждому сотруднику эту папку. В таком случае сотрудник будет иметь доступ ко всем сетевым приложениям. С точки зрения безопасности и производительности труда он должен видеть только те ярлыки сетевых приложений, с которыми работает.

Одно из возможных решений – создать несколько сетевых папок и подключать их в зависимости от должностных обязанностей сотрудника. Все это приводит к созданию нескольких сетевых дисков и увеличению затрат на администрирование.

Создав ярлыки пользователей в папке «Мой компьютер», вы избавитесь от нескольких лишних сетевых дисков, упростите доступ к ресурсам. С точки зрения безопасности это решение также предпочтительно: сотрудник не сможет увидеть путь к приложению, удалить ярлык.

Воспользовавшись группами безопасности в Active Directory можно создать для каждого пользователя индивидуальный набор ярлыков (см. рис. 1). Естественно, домен в этом случае построен на основе Windows 2000/2003 Server. В противном случае данное решение сложно реализуемо.

Внешний вид папки «Мой Компьютер»

Рисунок 1. Внешний вид папки «Мой Компьютер»

Сразу хотелось бы отметиьть: в статье описываются подход, концепция. Несмотря на то что в ней приведены листинги и рассмотрены нюансы, статья не должна рассматриваться как пошаговая инструкция.

Реестр

Рассмотрим подробнее алгоритм создания ярлыка. Процедура описания ярлыка состоит из двух частей. В первой части описывается местоположение объекта, а во второй – его свойства.

Для описания местоположения объекта (папка «Мой компьютер») достаточно создать в ветви реестра: HKLMSoftwareMicrosoftCurrentVersionExplorerMyComputerNameSpace папку. Имя папки – уникальный CLSID, например, {C7AF0CFE-D0C4-11DC-B55C-F6B756D89593}. Для его генерации можно воспользоваться стандартной утилитой uuidgen.exe, входящей в состав Microsoft SDK. После установки пакета утилита находится в папке C:Program FilesMicrosoft SDKBin.

Чтобы описать свойства объекта (ярлыка или папки), необходимо в ветви HCCRCLSID создать папку. Ее имя – сгенерированный CLSID, который был использован в ветви HKLM. Внутренняя структура подпапок, которую необходимо воспроизвести, приведена на рис. 2.

Структура папок в HCCRCLSID{GUID

Рисунок 2. Структура папок в HCCRCLSID{GUID}

Назначение папок, содержащиеся в них ключи и соответствующие им значения описаны в таблице.

Листинг 1. Создание ярлыка в папке «Мой Компьютер». REG-файл

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{C7AF0CFE-D0C4-11DC-B55C-F6B756D89593}]

@="Карта г.Москвы"

"infotip"="Карта г.Москвы"

[HKEY_CLASSES_ROOT\CLSID\{C7AF0CFE-D0C4-11DC-B55C-F6B756D89593}\defaulticon]

@="\\\\Server\Folder$\\\MoscowMap\\Btk2007.exe,0"

[HKEY_CLASSES_ROOT\CLSID\{C7AF0CFE-D0C4-11DC-B55C-F6B756D89593}\shell\open\command]

@="\\\\Server\Folder$\\\MoscowMap\\Btk2007.exe"

[HKEY_CLASSES_ROOT\CLSID\{C7AF0CFE-D0C4-11DC-B55C-F6B756D89593}\ShellFolder]

"Attributes"=hex:00,01,00,a0

HKLM\Software\Microsoft\CurrentVersion\Explorer\MyComputer\NameSpace\{C7AF0CFE-D0C4-11DC-B55C-F6B756D89593}

Итак, ярлык создан. Рассмотрим механизм создания персонального набора ярлыков для каждого пользователя.

Описание свойств ярлыка в HCCRCLSID

Папка реестра

Ключ

Тип данных

Значение

Комментарий

HCCRCLSID

@

REG_SZ

Карта г. Москвы

Название ярлыка, отображаемое в папке «Мой Компьютер»

HCCRCLSID

infotip

REG_SZ

Карта г.Москвы за ноябрь 2007 года

Подробное описание ярлыка. Отображается, если навести курсор на ярлык и подождать 1-2 секунды (см. рис. 1, указано красной стрелкой)

HCCRCLSIDdefaulticon

@

REG_SZ

ServerFolder$MoscowMapBtk2007.exe,0

или ServerFolder$MoscowMapMap.ico

Путь к иконке, которую увидит пользователь

HCCRCLSIDdefaulticon
shellopencommand

@

REG_SZ

 Server Folder$MoscowMap Btk2007.exe

Путь к приложению, которое будет запускать при нажатии на иконку

HCCRCLSIDshellfolder

Attributes

REG_BINARY

hex:00,01,00,a0

Благодаря этому ключу созданный ярлык нельзя переименовать, удалить и т. д.

Способы внедрения

Для успешной работы сценария регистрации пользователей сети необходимы административные привилегии, поскольку рядовой пользователь не имеет прав делать изменения в таких ветвях реестра, как HKLM и HCCR. Существует несколько способов решения данной проблемы. Первый – запускать сценарий с помощью командного файла, внутри которого команда RunAs. Такое решение небезопасно, поскольку имя и пароль учетной записи с административными привилегиями будет храниться в общедоступном месте – папке Netlogon. Это серьезная брешь в системе с точки зрения безопасности. Второй способ – запускать веб-сайт на основе ASP.NET в скрытом режиме с помощью сценария, а создавая его, воспользоваться преимуществом механизма представлений (имперсонализации). Таким образом, не публикуя в общедоступном месте имя и пароль административной учетной записи, можно достигнуть требуемого эффекта.

Включение режима представлений осуществляется в файле web.config, а для веб-cайта необходимо создать пул в IIS 6 под управлением Windows 2003 Server.

Для создания веб-сайта лучше всего воспользоваться Microsoft Visual Studio 2005. Язык можно выбрать любой. Для создания веб-cайта я выбрал VB.NET.

Персональный набор ярлыков для пользователя

В Active Directory есть несколько групп, каждая из которых соответствует какому-либо ресурсу. В свойствах этой группы описаны характеристики ярлыка (см. рис. 3). При регистрации пользователя в сети в сценарии, по префиксу в названии (mc$_), определяется список групп, членами которых является входящий в сеть пользователь. Затем считываются нужные параметры группы, и осуществляется запись данных в реестр. Таким образом, пользователь получает индивидуальный набор ярлыков. Обратите внимание, что при этом название группы может быть произвольным. Важно, чтобы в названии группы был префикс.

Параметры ярлыка в группе безопасности Active Directory

Рисунок 3. Параметры ярлыка в группе безопасности Active Directory

Чтение свойств группы безопасности

Чтение данных из Active Directory осуществляется с помощью стандартной .NET FrameWork-библиотеки System.DirectoryServices, пространство имен которой необходимо импортировать в проект. Алгоритм работы этой части сайта следующий:

  • определение имени текущего домена;
  • поиск групп безопасности с помощью фильтра;
  • чтение характеристик группы.

Определение имени домена осуществляется с помощью виртуального объекта RootDSE. Этот объект присутствует во всех доменах. Считывая значение свойства DefaultNamingContext, получают имя текущего домена (см. листинг 2).

Для поиска групп безопасности используют объект DirectoryEntry. В качестве параметров фильтра фигурирует имя группы – параметр cn (см. рис. 4) и тип объекта. Подробно фильтры описаны в статье Platform SDK: System.DirectoryServices [1].

Чтение полей группы безопасности в Active Directory

Рисунок 4. Чтение полей группы безопасности в Active Directory

Затем осуществляется чтение значений свойств из найденных объектов.

Листинг 2. Поиск групп в Active Directory. Считывание свойств

Imports System.DirectoryServices

Public Domain As String = ""

‘ Определение имени домена с помощью виртуального объекта

‘ RootDSE

Dim obj As New DirectoryEntry("LDAP://RootDSE")

Domain = "LDAP://" + obj.Properties("DefaultNamingContext").Value

‘ Формирование поискового запроса в текущем домене

Dim obj As New DirectorySearcher()

obj.SearchRoot = New DirectoryEntry("LDAP://" + Domain)

Dim query As String = "(&(objectclass =group)(cn=" + Prefix + "*))"

obj.Filter = query

Поиск

Dim bb As SearchResultCollection

bb = search.FindAll

‘ Чтение результатов поиска

    For Each b As SearchResult In bb

           Dim path As String = b.GetDirectoryEntry.Properties("distinguishedName").Value.ToString()

           Dim read = GetObject("LDAP://" + path)

           ‘ чтение поля INFO

           For Each t As String In read.info

                 Response.Write (t + "<br>")

           Next

           ‘ чтение поля DESCRIPTION

                 Response.Write read.description

    Next

Настройка доменных политик

Читатель наверняка уже понял, что без удаленного подключения к реестру не обойтись. Для этого необходимы административные права, которые теперь есть; имя компьютера – его легко определить с помощью инструкции Request.UserHostName. Пути в реестре, изменяемые параметры и их значения. Все необходимые условия для удаленного подключения к реестру выполнены.

Однако удаленный реестр будет недоступен, если не выполнено два дополнительных условия:

  • включена служба Remote Registry (служба удаленного управления реестром);
  • выключен Windows FireWall.

Оба результата можно достигнуть с помощью групповых доменных политик. По умолчанию обе политики не настроены. Для их настройки необходимо вызвать MMC-консоль. Обе политики (Remote Registry и Windows Firewall/Internet Connection Sharing) находятся в разделе «Computer Configuration» (см. рис. 5).

Рисунок 5. Настройка доменных политик

Управление реестром удаленного компьютера

Для получения доступа к реестру необходимо импортировать пространство имен Microsoft.Win32. Для удаленного управления реестром сначала получают удаленный доступ к нужным ветвям реестра, затем, используя свойство OpenSubKey, получают доступ к нужной папке указанной ветви (см. листинг 3).

Листинг 3. Удаленное подключение к реестру

Imports Microsoft.Win32.

Public hklm As RegistryKey

Public hccr As RegistryKey

hklm = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, PcName)

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 = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace"

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}

hccr.OpenSubKey(Key2, True).OpenSubKey(RegistryPath, True).CreateSubKey("shellFolder").SetValue("attributes", temp_array, RegistryValueKind.Binary)

Запуск веб-сайта из сценария в фоновом режиме

В завершение статьи осталось рассказать о фоновом запуске веб-сайта из сценария. Для создания экземпляра Internet Explorer используется метод CreateObject(). После вызова объекта InternetExplorer.Application обязательно необходимо дождаться, пока он запустится (см. листинг 6), и только после этого запускать страницу. Для обеспечения запуска приложения в фоновом режиме присвойте свойства visible значение 0 или false.

Листинг 7. Запись данных в реестр

set oIE=CreateObject("InternetExplorer.Application")  

do while (oie.busy)

loop

oIE.navigate "http://mycomputer"

oIE.visible = 0

oIE.Quit

set oIE=Nothing

Заключение

Я надеюсь, что статья будет вам полезной и вы сможете развить предложенную тему, увеличив безопасность своей сети и сделав работу сотрудников еще комфортнее.

Приложение

CLSID – уникальный 32-байтный (128-битный) номер, состоящий из шестнадцатеричных чисел. Первые 8 байт генерируются случайным образом, следующие четыре используются для создания текущего значения даты и времени, остальные генерируются на основе данных о конфигурации компьютера. Как правило, CLSID-номер заключается в фигурные скобки и имеет следующий формат записи: {xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx}. Стандартные объекты Windows, такие как «Панель Управления», «Корзина» во всех ОС имеют фиксированный CLSID.

  1. System.DirectoryServices – http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sds/sds/directoryservices_directorysearcher_filter.asp.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru