Name: String;
Name: System.String;
Свойство Name возвращает имя субъекта безопасности.
Для выполнения примера убедитесь, что на диске «D:\» содержится файл обновления Update.pefx.
Добавьте ссылки на системные сборки: Metabase, ForeSystem (для примера на Fore.NET).
Sub UserProc;
Var
Mb: IMetabase;
Upd: IMetabaseUpdate;
RootFolder: IMetabaseUpdateFolderNode;
Subj: IMetabaseUpdateAccessSubject;
Subjs: IMetabaseUpdateAccessSubjects;
Se: IMetabaseSecurity;
Lic: Object;
Begin
Mb := MetabaseClass.Active;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := Mb.RequestLicense(UiLicenseFeatureType.Adm);
Upd := Mb.CreateUpdate;
Upd.LoadFromFileNF("D:\Update.pefx");
Upd.AllowReplaceSD := True;
RootFolder := Upd.RootFolder;
Subjs := Upd.Subjects;
Debug.WriteLine("Количество субъектов безопасности учавствующих в обновлении прав доступа: ");
Se := Mb.Security;
For Each Subj In Subjs Do
Debug.WriteLine(Subj.Name);
Debug.WriteLine(Subj.Description);
Debug.WriteLine(Subj.Sid.AsString);
End For;
// Сохраним изменения
Se.Apply;
// Освободим лицензию
Lic := Null;
End Sub UserProc;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.ForeSystem;
…
Public Shared Sub Main(Params: StartParams);
Var
Mb: IMetabase;
Upd: IMetabaseUpdate;
RootFolder: IMetabaseUpdateFolderNode;
Subj: IMetabaseUpdateAccessSubject;
Subjs: IMetabaseUpdateAccessSubjects;
Se: IMetabaseSecurity;
Lic: Object;
Begin
Mb := Params.Metabase;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := Mb.RequestLicense(UiLicenseFeatureType.lftAdm);
Upd := Mb.CreateUpdate();
Upd.LoadFromFileNF("D:\"+ "Update.pefx", UpdateLoadMode.ulmReplace);
Upd.AllowReplaceSD := True;
RootFolder := Upd.RootFolder;
Subjs := Upd.Subjects;
System.Diagnostics.Debug.WriteLine("Количество субъектов безопасности учавствующих в обновлении прав доступа: ");
Se := Mb.Security;
For Each subj In subjs Do
System.Diagnostics.Debug.WriteLine(Subj.Name);
System.Diagnostics.Debug.WriteLine(Subj.Description);
System.Diagnostics.Debug.WriteLine(Subj.Sid.AsString);
End For;
// Сохраним изменения
Se.Apply();
// Освободим лицензию
Lic := Null;
End Sub;
После выполнения примера в консоли появится информация о всех субъектах безопасности, которым будут обновлены права доступа к объектам.
См. также: