NTSet Component Active Directory

  • Автор темы urichku
  • 1022
  • Обновлено
  • 11, Jan 2017
  • #1
Раньше программировал на Delphi 7 и горя не знал, применяя компонент NTSet Component.

Его особенности:

- Настройка сервисов Windows NT;

- Работают с файлом регистрации также проста как с TStringList;

- Управление информацией о пользователях и группах;

- Управление общими устройствами, контроль над подключенными пользователи и используемыми ресурсами;

- Предоставление права доступа для файлов на NTFS;

- Настройка установок безопасности реестра;

- Управление привилегиями, даваемыми пользователям;

- Поиск и установка разнообразных настроек для сетевых компьютеров;

- Посылка сообщений по сети на удаленный компьютер;

- Просмотр сетевых ресурсов и соединенных устройств;

- Контроль сеансов терминального обслуживания;

- Планирование задач для выполнения на сетевых компьютерах;

- Конфигурирование системы сетевой защиты под Windows XP и выше;

- Конфигурирование политики групп на автономных компьютерах или в Активном Каталоге;

- Просмотр существующих объектов политики группы;

- Просмотр компонентов Активного Каталога.

Сейчас, потребовалось написать программу на XE10.1. Компонента NTSet на эту версию нет.

Его судя по всему перестали сопровождать уже лет 10. Кто подскажет наименее трудоемкий выход из ситуации.

Очень уж не хочется изобретать велосипед.

Может есть другие компоненты или библиотеки для работы с мелкомягкими.

urichku


Рег
16 Jun, 2009

Тем
1

Постов
5

Баллов
15
  • 12, Jan 2017
  • #2
Как вариант написать на Delphi 7 dll библиотеку со всем необходимым функционалосм и уже на Delphi Xe 10.1 использовать ну или вообще под другим языком. Как на меня так это самый простой вариант
 

neobi1


Рег
06 Jul, 2014

Тем
6

Постов
39

Баллов
99
  • 21, Mar 2017
  • #3
NTSet базируется на стандартных WMI запросах. Начинал в свое время пилить модуль... руки не дошли, может пригодится
 unit System.WMI;

interface

uses

Winapi.ActiveX, ComObj,

System.Classes, System.SysUtils, System.Variants;

type

// ----------------------------------------------------------------------------

// TWin32_OperationSystem

// ----------------------------------------------------------------------------

TItemOperationSystem = class(TCollectionItem)

private

aName: UnicodeString;

aArchitecture: UnicodeString;

aBuild: UnicodeString;

aServicePack: UnicodeString;

aLanguage: UnicodeString;

aRegUser: UnicodeString;

aRegCompany: UnicodeString;

aBoot: UnicodeString;

aSystemDevice: UnicodeString;

aSystemDrive: UnicodeString;

aSystemDirectory: UnicodeString;

public

constructor Create(Collection: TCollection); override;

destructor Destroy; override;

published

property Name: UnicodeString read aName;

property Architecture: UnicodeString read aArchitecture;

property Build: UnicodeString read aBuild;

property ServicePack: UnicodeString read aServicePack;

property Language: UnicodeString read aLanguage;

property RegUser: UnicodeString read aRegUser;

property RegCompany: UnicodeString read aRegCompany;

property Boot: UnicodeString read aBoot;

property SystemDevice: UnicodeString read aSystemDevice;

property SystemDrive: UnicodeString read aSystemDrive;

property SystemDirectory: UnicodeString read aSystemDirectory;

end;

TWin32_OperationSystem = class(TCollection)

private

function GetItem(Index: Integer): TItemOperationSystem;

procedure SetItem(Index: Integer; const Value: TItemOperationSystem);

public

function Add: TItemOperationSystem;

procedure GetInfo(aHost, aUser, aPswd: UnicodeString);

public

property Items[Index: Integer]: TItemOperationSystem read GetItem write SetItem; default;

end;

// ----------------------------------------------------------------------------

// TWin32_SystemEnclosure

// ----------------------------------------------------------------------------

TItemSystemEnclosure = class(TCollectionItem)

end;

TWin32_SystemEnclosure = class(TCollection)

end;

// ----------------------------------------------------------------------------

// TWin32_Processor

// ----------------------------------------------------------------------------

TItemProcessor = class(TCollectionItem)

private

aName: UnicodeString;

aNumberOfPhysicalCore: UnicodeString;

aNumberOfLogicalCore: UnicodeString;

aL2CacheSize: UnicodeString;

aL3CacheSize: UnicodeString;

public

constructor Create(Collection: TCollection); override;

destructor Destroy; override;

published

property Name: UnicodeString read aName;

property NumberOfPhysicalCore: UnicodeString read aNumberOfPhysicalCore;

property NumberOfLogicalCore: UnicodeString read aNumberOfLogicalCore;

property L2CacheSize: UnicodeString read aL2CacheSize;

property L3CacheSize: UnicodeString read aL3CacheSize;

end;

TWin32_Processor = class(TCollection)

private

function GetItem(Index: Integer): TItemProcessor;

procedure SetItem(Index: Integer; const Value: TItemProcessor);

public

function Add: TItemProcessor;

procedure GetInfo(aHost, aUser, aPswd: UnicodeString);

public

property Items[Index: Integer]: TItemProcessor read GetItem write SetItem; default;

end;

// ----------------------------------------------------------------------------

// TItemMotherboard

// ----------------------------------------------------------------------------

TItemMotherboard = class(TCollectionItem)

private

aName: UnicodeString;

aManufacturer: UnicodeString;

aProduct: UnicodeString;

aVersion: UnicodeString;

aSerialNumber: UnicodeString;

public

constructor Create(Collection: TCollection); override;

destructor Destroy; override;

published

property Name: UnicodeString read aName;

property Manufacturer: UnicodeString read aManufacturer;

property Product: UnicodeString read aProduct;

property Version: UnicodeString read aVersion;

property SerialNumber: UnicodeString read aSerialNumber;

end;

TWin32_Motherboard = class(TCollection)

private

function GetItem(Index: Integer): TItemMotherboard;

procedure SetItem(Index: Integer; const Value: TItemMotherboard);

public

function Add: TItemMotherboard;

procedure GetInfo(aHost, aUser, aPswd: UnicodeString);

public

property Items[Index: Integer]: TItemMotherboard read GetItem write SetItem; default;

end;

// ============================================================================

implementation

// ----------------------------------------------------------------------------

// TWin32_OperationSystem

// ----------------------------------------------------------------------------

constructor TItemOperationSystem.Create(Collection: TCollection);

begin

inherited Create(Collection);

end;

destructor TItemOperationSystem.Destroy;

begin

inherited;

end;

// ----------------------------------------------------------------------------

function TWin32_OperationSystem.Add: TItemOperationSystem;

begin

Result := TItemOperationSystem(inherited Add);

end;

function TWin32_OperationSystem.GetItem(Index: Integer): TItemOperationSystem;

begin

Result := TItemOperationSystem(inherited Items );

end;

procedure TWin32_OperationSystem.SetItem(Index: Integer;

const Value: TItemOperationSystem);

begin

if (Index > -1) and (Index <= Self.Count)

then Items .Assign(Value);

end;

procedure TWin32_OperationSystem.GetInfo(aHost, aUser, aPswd: UnicodeString);

var

aItem: TItemOperationSystem;

aSWbemLocator: OleVariant;

aWbemServices: OleVariant;

aWbemQuery: OleVariant;

aWbemObject: OleVariant;

aEnum: IEnumVARIANT;

aValue: LongWord;

begin

aSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');

aWbemServices := aSWbemLocator.ConnectServer(aHost, 'root\CIMV2', aUser, aPswd);

aWbemQuery := aWbemServices.ExecQuery('SELECT * FROM Win32_OperatingSystem','WQL', $00000020);

aEnum := IUnknown(aWbemQuery._NewEnum) as IEnumVariant;

while aEnum.Next(1, aWbemObject, aValue) = 0 do

begin

aItem := TItemOperationSystem.Create(Self);

aItem.aName := VarToStr(aWbemObject.Caption);

aItem.aArchitecture := VarToStr(aWbemObject.OSArchitecture);

aItem.aBuild := VarToStr(aWbemObject.Version);

end;

aWbemObject := Unassigned;

end;

// ----------------------------------------------------------------------------

// TWin32_Processor

// ----------------------------------------------------------------------------

constructor TItemProcessor.Create(Collection: TCollection);

begin

inherited Create(Collection);

end;

destructor TItemProcessor.Destroy;

begin

inherited;

end;

// ----------------------------------------------------------------------------

function TWin32_Processor.Add: TItemProcessor;

begin

Result := TItemProcessor(inherited Add);

end;

function TWin32_Processor.GetItem(Index: Integer): TItemProcessor;

begin

Result := TItemProcessor(inherited Items );

end;

procedure TWin32_Processor.SetItem(Index: Integer; const Value: TItemProcessor);

begin

if (Index > -1) and (Index <= Self.Count)

then Items .Assign(Value);

end;

procedure TWin32_Processor.GetInfo(aHost, aUser, aPswd: UnicodeString);

var

aItem: TItemProcessor;

aSWbemLocator: OleVariant;

aWbemServices: OleVariant;

aWbemQuery: OleVariant;

aWbemObject: OleVariant;

aEnum: IEnumVARIANT;

aValue: LongWord;

begin

aSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');

aWbemServices := aSWbemLocator.ConnectServer(aHost, 'root\CIMV2', aUser, aPswd);

aWbemQuery := aWbemServices.ExecQuery('SELECT * FROM Win32_Processor','WQL', $00000020);

aEnum := IUnknown(aWbemQuery._NewEnum) as IEnumVariant;

while aEnum.Next(1, aWbemObject, aValue) = 0 do

begin

aItem := TItemProcessor.Create(Self);

aItem.aName := VarToStr(aWbemObject.Name);

aItem.aNumberOfPhysicalCore := VarToStr(aWbemObject.NumberOfCores);

aItem.aNumberOfLogicalCore := VarToStr(aWbemObject.NumberOfLogicalProcessors);

aItem.aL2CacheSize := VarToStr(aWbemObject.L2CacheSize);

aItem.aL3CacheSize := VarToStr(aWbemObject.L3CacheSize);

end;

aWbemObject := Unassigned;

end;

// ----------------------------------------------------------------------------

// TWin32_Motherboard

// ----------------------------------------------------------------------------

constructor TItemMotherboard.Create(Collection: TCollection);

begin

inherited Create(Collection);

end;

destructor TItemMotherboard.Destroy;

begin

inherited;

end;

// ----------------------------------------------------------------------------

function TWin32_Motherboard.Add: TItemMotherboard;

begin

Result := TItemMotherboard(inherited Add);

end;

function TWin32_Motherboard.GetItem(Index: Integer): TItemMotherboard;

begin

Result := TItemMotherboard(inherited Items );

end;

procedure TWin32_Motherboard.SetItem(Index: Integer;

const Value: TItemMotherboard);

begin

if (Index > -1) and (Index <= Self.Count)

then Items .Assign(Value);

end;

procedure TWin32_Motherboard.GetInfo(aHost, aUser, aPswd: UnicodeString);

var

aItem: TItemMotherboard;

aSWbemLocator: OleVariant;

aWbemServices: OleVariant;

aWbemQuery: OleVariant;

aWbemObject: OleVariant;

aEnum: IEnumVARIANT;

aValue: LongWord;

begin

aSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');

aWbemServices := aSWbemLocator.ConnectServer(aHost, 'root\CIMV2', aUser, aPswd);

aWbemQuery := aWbemServices.ExecQuery('SELECT * FROM Win32_BaseBoard','WQL', $00000020);

aEnum := IUnknown(aWbemQuery._NewEnum) as IEnumVariant;

while aEnum.Next(1, aWbemObject, aValue) = 0 do

begin

aItem := TItemMotherboard.Create(Self);

aItem.aName := VarToStr(aWbemObject.Caption);

aItem.aManufacturer := VarToStr(aWbemObject.Manufacturer);

aItem.aProduct := VarToStr(aWbemObject.Product);

aItem.aVersion := VarToStr(aWbemObject.Version);

aItem.aSerialNumber := VarToStr(aWbemObject.SerialNumber);

end;

aWbemObject := Unassigned;

end;

// ============================================================================

end.

Пример использования:

procedure TFormDevices.FormShow(Sender: TObject); var aWin32_Info: TWin32_Motherboard; i: Cardinal; begin Self.Caption := 'Диспетчер устройств';

aWin32_Info := TWin32_Motherboard.Create(TItemMotherboard);

aWin32_Info.GetInfo(EmptyStr, EmptyStr, EmptyStr);

for i := 0 to aWin32_Info.Count - 1 do

ShowMessage(

aWin32_Info[i].Manufacturer + chr(13) +

aWin32_Info[i].Product + chr(13) +

aWin32_Info[i].Version + chr(13) +

aWin32_Info[i].SerialNumber);

end;
По сути это база, допилить можно что угодно. Ну и ссылка на первоисточник
https://msdn.microsoft.com/en-us/library/aa394388(v=vs.85).aspx
 

SkOle


Рег
06 Dec, 2007

Тем
1

Постов
9

Баллов
19
Тем
49554
Комментарии
57426
Опыт
552966

Интересно