Принципиальные схемы продемонстрировали:
Польза регистратуры (см. процедуру TfrmLoadHive.btnDisplayValueClick (прислужника: TObject))
Крапивницы & крапивница потребителя значения по умолчанию &. (см. ниже) значения по умолчанию
Исполняющ другую программу изнутри программы Делфи (см. процедуру TfrmLoadHive.btnExecRegEditClick)
Польза отростчатых привилегированностей знака внимания в (см. ниже) Делфи
RE: Крапивницы
Регистратура WinXP разделена в много различных разделов. Каждый главный раздел вызван крапивницей. Регулировать полные ветви регистратуры как отдельно крапивницы позволяет Майкрософт выполнить несколько опрятных выходок. Прежде всего, оно позволяет крапивнице появиться в несколько мест в регистратуре с различными именами. Самый очевидный пример этого HKey_Current_User которое конечно указывает к крапивнице потребителя который вносил в журнал дальше. Менее известный пример HKEY_CLASSES_ROOT которое просто перезаряженная версия KEY_LOCAL_MACHINE \ ПРОГРАМНОГО ОБЕСПЕЧЕНИЯ \ типов. Т близкий друг с командой subst DOS и соединения Линукс символические могут нарисовать сравнения там слишком.
Даже менее известный польза крапивниц окон что Windows не держит всю из своих крапивниц активной. Она имеет отдельно крапивницы, котор нужно использовать как примеры для создавать местных потребителей, и другое для создавать учет потребителя когда кто-то вносило в журнал в машину отдаленно через домен. Я кажется, что вспоминаю там быть парой больше примеров но они увиливает меня в настоящее время. Те крапивницы хранятся как архивы DAT на жесткие диске. На пример, в значение по умолчанию XP установите, крапивница регистратуры, котор хранят на `c:\ \ документах и установки \ \ \ потребителя значения по умолчанию \ NTUSER.DAT будут использованы для того чтобы установить все входы регистратуры значения по умолчанию когда журналы новые потребителя в машину. Установите значение в той крапивнице, и все будущие потребители будут иметь то значение.
ПРИМЕЧАНИЕ: Не смутите это с HKEY_USERS \ .DEFAULT. Крапивница HKEY_USERS \ .DEFAULT хранит используемые значения когда никто внесено в журнал дальше. «Huh? Как смогл которое полезно?» Наилучшим образом, если вы думаете о ем, то контролировать кладет ли или не компьютер для того чтобы спать если кто-то booted, то его но не внесено в журнал дальше может быть очень важн. Могло также быть славно установить хранитель экрана который работает когда вы logout вашего компьютера но выходите он повернуто дальше. Ультра безопасная персона смогла установить цветовую схему для того чтобы быть полностью черна на черноте, тогда только персона которая действительно знает чего они делают смогла внести в журнал в компьютер - LOL. Во всяком случае, .DEFAULT и крапивницы потребителя значения по умолчанию нет такой же вещи.
RE: Привилегированности знака внимания:
Windows XP /NT/2000 и более новые операционные системы имеет методы предварительной обеспеченностью для того чтобы ограничить какие программы могут и не могут сделать. Эти ограничения также позволяют вносить в журнал некоторых ограниченных функций доступа. Так, например, пока возможно для программ установить время системы, как раз любая старая программа не может сделать его.
Программа должна попросить и получить позволение уточнить время, прежде чем она может быть accomplished. Бит как какой хмель колокола должен сделать для того чтобы получить в кто-то гостиничный номер. Если хмелю колокола нужно получить в комнату 5321 (препятствуйте нам претендуйте ключей польз этой гостиницы и пластичные карточки), то хмель колокола скажет его менеджера он идет получить в комнату, смотрит вверх который ключ который комнате нужно, попросите менеджеру тот ключ, открывает комнату и делает его вещь. После этого конечно он зафиксирует дверь как только он будет сделан. Заметьте что если хмель колокола делает пук других вещей перед фиксировать дверь, то комната смогла быть burglarized. И когда хороший хмель колокола должен достигнуть комнаты несколько времен, комната будет locked между временами он достигает ее.
Процесс для Windows это же:
Скажите Windows вы будете регулировать привилегированности путем вызывать: OpenProcessToken (GetCurrentProcess (),
TOKEN_ADJUST_PRIVILEGES или TOKEN_QUERY, TTokenHd);
Найдите местное название привилегированности вы будете регулировать путем вызывать LookupPrivilegeValue
Доступ Grant себя путем устанавливать TTokenPvg.Privileges [0]. Атрибуты к SE_PRIVILEGE_ENABLED
Фиксируйте дверь снова путем устанавливать TTokenPvg.Privileges [0]. Атрибуты к SE_PRIVILEGE_DISABLED
В моей программе, я создал 3 режима хелпера для работы с знаками внимания: SetTokenPrivilege, GrantPrivilege и RevokePrivilege. Последняя только подача 2 для того чтобы сделать мою вызывая ясность Кода. Считываемость необходима для любой профессиональной программы ранга. На некоторый этап вы забудете детали каждой одиночной программы вы имеете написать. Так, даже если вы только пишете режим для вашей собственной пользы, вы должны сделать чего вы можете сделать им более легкой прочитать. Задачи как это могут показаться расточительствованными на программах хода прочь, но больше вы делаете его, быстре вы будете и более правоподобно будет что ваша привычка Кода сочинительства хорошего оплатит под конец.
Здесь мои режимы привилегированности Делфи:
ДЕЛФИ:
-
{******************************************************************************
-
SetTokenPrivilege
-
Функция хелпера которая включает или выводит специфические привилегированности из строя на
-
определенный компьютер. НОЛЬ в SystemName значит что привилегированность будет а
-
для настоящего компьютера. Любое другое значение должно сопрягать имя компьютера
-
на вашей сети.
-
******************************************************************************}
-
процедура SetTokenPrivilege (aSystemName: PChar; aPrivilegeName: PChar; aEnabled: Булевско);
-
var
-
TTokenHd: Т-образная рукоятка;
-
TTokenPvg: TTokenPrivileges;
-
cbtpPrevious: DWORD;
-
rTTokenPvg: TTokenPrivileges;
-
pcbtpPreviousRequired: DWORD;
-
TokenOpened, ValueFound: Булевско;
-
начните // SetPrivilege
-
// система привилегированности только имеющееся на NT и за пределами
-
если (Win32Platform = VER_PLATFORM_WIN32_NT), то
-
после этого начните
-
// восстановляет знак внимания который представляет эту настоящую встречу применения
-
TokenOpened: = OpenProcessToken (GetCurrentProcess (),
-
TOKEN_ADJUST_PRIVILEGES или TOKEN_QUERY,
-
TTokenHd);
-
-
Проверка // для отказа
-
если (не TokenOpened), то
-
после этого повышение Exception.Create (`настоящий потребитель не имеет доступ необходимо, что побежало эта программа. ')
-
еще начните
-
// получает имя привилегированности (в виду того что Windows разноязычно, это необходимо сделать)
-
ValueFound: = LookupPrivilegeValue (aSystemName, aPrivilegeName, TTokenPvg.Privileges [0]. Luid);
-
TTokenPvg.PrivilegeCount: = 1;
-
-
// включает или выводит флаг из строя согласно пройденному bool
-
если (aEnabled), то
-
после этого TTokenPvg.Privileges [0]. Атрибуты: = SE_PRIVILEGE_ENABLED
-
другое TTokenPvg.Privileges [0]. Атрибуты: = SE_PRIVILEGE_DISABLED; // видит примечание на местном постоянн объявлении
-
cbtpPrevious: = SizeOf (rTTokenPvg);
-
pcbtpPreviousRequired: = 0;
-
если (не ValueFound), то
-
после этого повышение Exception.Create (`эта программа несовместимо при операционная система установленная на этот компьютер. ')
-
еще начните
-
попытка
-
// регулирует позволения как требовалось.
-
Windows.AdjustTokenPrivileges (TTokenHd, ложное, TTokenPvg, cbtpPrevious,
-
pcbtpPreviousRequired rTTokenPvg,);
-
за исключением
-
повышение Exception.Create (`настоящий потребитель не имеет необходимый доступ для того чтобы нагрузить крапивницу регистратуры. ')
-
конец;
-
конец;
-
конец
-
конец;
-
конец; // SetPrivilege
-
{******************************************************************************
-
GrantPrivilege
-
Этот режим дарует привилегированности необходим для того чтобы достигнуть спрятанной крапивницы системы
-
и нагрузите его в память.
-
******************************************************************************}
-
процедура TfrmLoadHive.GrantPrivilege (aPrivilegeName: Шнур);
-
начните // GrantPrivilege
-
SetTokenPrivilege (НОЛИ, PChar (aPrivilegeName), TRUE);
-
конец; // GrantPrivilege
-
-
{******************************************************************************
-
RevokePrivilege
-
Этот режим отменяет привилегированности уступанные GrantPrivilege
-
******************************************************************************}
-
процедура TfrmLoadHive.RevokePrivilege (aPrivilegeName: Шнур);
-
начните // RevokePrivilege
-
SetTokenPrivilege (НОЛЬ, PChar (aPrivilegeName), ЛОЖНЫЕ);
-
конец; // RevokePrivilege
В мой случай, я использую знак внимания SeRestorePrivilege. Это фактически один из самых мощных и самых летальных знаков внимания. С им вы говорящ Windows что вы программа жесткия диска резервная и вы хотите иметь доступ к всем видам архивов которым не позволяют большинств программам доступу к. Предположительно вы делаете это для хорошего и злейшего. Другие знаки внимания являются следующими:
SeCreateTokenPrivilege, SeAssignPrimaryTokenPrivilege, SeLockMemoryPrivilege, SeIncreaseQuotaPrivilege, SeUnsolicitedInputPrivilege, SeMachineAccountPrivilege, SeTcbPrivilege, SeSecurityPrivilege, SeTakeOwnershipPrivilege, SeLoadDriverPrivilege, SeSystemProfilePrivilege, SeSystemtimePrivilege, SeProfileSingleProcessPrivilege, SeIncreaseBasePriorityPrivilege, SeCreatePagefilePrivilege, SeCreatePermanentPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeShutdownPrivilege, SeDebugPrivilege, SeAuditPrivilege, SeSystemEnvironmentPrivilege, SeChangeNotifyPrivilege, SeRemoteShutdownPrivilege, SeUndockPrivilege, SeSyncAgentPrivilege, SeEnableDelegationPrivilege, SeManageVolumePrivilege
Так, то основы. Примите взгляду комментарии в остальноях исходного кода и вы скоро увидите что случается и почему.
Также попробуйте некоторые различные вещи. Побегите RegEdit и нагрузите крапивницу вручную через крапивницу File>Load. Вы заметили что вы должны быть на этап не познее одна из поджатых крапивниц раньше что вариант позволен? Что случается когда вы отожмете кнопку крапивницы нагрузки но вы бедный человек даровали привилегированности? Что случается когда вы даруете ваши привилегированности собственной личности и не отменяйте их b4 закрывая программу. Можете вы после этого нагрузить крапивницу когда вы rerun программа? Что случается если вы время Grant 4 но только разгржаете раз?
Эксперимент. Но вспомните, вы играете с регистратурой и thar изверги там. Этот app работает отлично на моей системе, я использую подобный режим регулярно на леты пары теперь, но бедный человек I испытал его с всеми версиями Windows и я не имею никакую идею как он отрегулирует вне---обычные обстоятельства, как плохие участки в архиве dat на вашем HD. Дополнительно, пакет услуг Windows смог полностью изменить чего эта программа делает. Так, вкратце, не придите к мне когда вам нужно заново установить Windows. Я просто скажу что было плохим совпадением и так или иначе ваша система за моим управлением, вами никогда должна не бежать эта программа на ей. Я не ответствен для вашей финансовохозяйственной и эмоциональной потери. Вы ответствены для убеждаться что исходный код вы бежите на вашем компьютере не имеет нарочитые или случайные злостые поведения.
http://www.TheCodeCave.com/downloads/delphi/LoadHiveDemo.exe
http://www.TheCodeCave.com/downloads/delphi/LoadHiveDemo.dpr
http://www.TheCodeCave.com/downloads/delphi/U_LoadHive.dfm
http://www.TheCodeCave.com/downloads/delphi/U_LoadHive.pas