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

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

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

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

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

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

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

Читайте и познавайте мир технологий!

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

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

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

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

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

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

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

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

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

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

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

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

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

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

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

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

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

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

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

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

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

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

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

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

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

02.12.2013г.
Просмотров: 3000
Комментарии: 0
Не думай о минутах свысока

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

Друзья сайта  

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

Архив номеров / 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