Как я могу ограничить программу для вызова функций API, связанных с редактированием ключей / строк реестра?
Модель безопасности Windows разработана для того же сценария . Каждый ключ реестра имеет список контроля доступа (ACL), в котором указываются доверенные лица (например, учетная запись пользователя) и действия, которые им разрешено выполнять (например, читать) над ключом.
Чтобы использовать это для ограничения вашего приложения, создайте учетную запись пользователя без прав администратора и всегда запускайте приложение в контексте этого пользователя. Вы можете использовать возможность запуска Windows от имени другого пользователя для выполнения приложения таким образом, без необходимости фактически входить в систему с ограниченной учетной записью.
По умолчанию стандартные пользователи имеют доступ только для чтения к общесистемным частям реестра, таким как ветка HKLM, и могут вносить изменения только в ветку HKCU своей учетной записи.
Если вы хотите дополнительно ограничить разрешения реестра учетной записи, вам следует изменить соответствующие ветви реестра, чтобы указать разрешения, требуемые для учетной записи пользователя. Вы можете использовать Microsoft Process Monitor, чтобы увидеть, к какому реестру он обращается, и для чего могут потребоваться измененные разрешения.
Следует иметь в виду, что почти для всех приложений Windows необходим доступ к реестру для правильной работы. Массовая блокировка такого доступа может помешать программе выполнить предназначенную функцию.
Дополнительная информация: