Создать файл, который может быть открыт только службой Windows

Можно ли выбрать такой дескриптор безопасности, используя строку DACL, чтобы файл мог быть открыт только службой Windows, но не обычным процессом, даже если процесс запускается локальной учетной записью администратора?

Чтобы уточнить, мне просто нужно сделать это достаточно сложно для нетехнического пользователя, чтобы открыть его в блокноте и подделать его. Не нужно работать против программиста, желающего посвятить месяц своей жизни реверс-инжинирингу и взломать его.

Я предпочитаю добиться этого, используя DACL вместо блокировки файла, потому что тогда моей службе Windows не нужно все время работать для защиты файла.

2

Решение

Учетная запись локального администратора = Бог (по крайней мере, на коробке). Там нет никакого способа сделать это.

Вы можете определить для своей службы специальную привилегированную учетную запись и сделать списки ACL для защищенного файла доступом только для этого пользователя (и всех администраторов машины). Вы можете запретить интерактивный вход в систему, используя эту учетную запись службы.

Если ваша главная задача — вмешательство интерактивных пользователей, вам может потребоваться политика, согласно которой локальный пользователь не запускается по умолчанию с правами локального администратора. К сожалению, вы не можете разрешить «частичные» права локального администратора — это все или ничего.

3

Другие решения

Я не знаю достаточно о DACL, чтобы сказать, можете ли вы достичь того, чего хотите, с их помощью. Я могу подумать о нескольких вещах, которые вы можете сделать, чтобы кому-то было сложнее подделать файл, в дополнение к ограничению его учетной записью локального администратора:

  1. Запустите службу автоматически и сразу же откройте файл без параметров обмена. Пока ваша служба открыта, другой процесс не сможет ее открыть.
  2. Вычислите хэш содержимого файла плюс соль, жестко запрограммированный в вашем сервисе, и сохраните его где-нибудь еще, например, в другом файле, в реестре или даже онлайн. В следующий раз, когда вы откроете файл, проверьте хеш, который скажет вам, если кто-то подделал файл с момента последнего открытия.

Это не Защищенный от любых нагрузок, но, похоже, ваша цель состоит в том, чтобы сделать его еще сложнее. Нет надежного способа остановить пользователя с правами администратора.

1