Можно ли выбрать такой дескриптор безопасности, используя строку DACL, чтобы файл мог быть открыт только службой Windows, но не обычным процессом, даже если процесс запускается локальной учетной записью администратора?
Чтобы уточнить, мне просто нужно сделать это достаточно сложно для нетехнического пользователя, чтобы открыть его в блокноте и подделать его. Не нужно работать против программиста, желающего посвятить месяц своей жизни реверс-инжинирингу и взломать его.
Я предпочитаю добиться этого, используя DACL вместо блокировки файла, потому что тогда моей службе Windows не нужно все время работать для защиты файла.
Учетная запись локального администратора = Бог (по крайней мере, на коробке). Там нет никакого способа сделать это.
Вы можете определить для своей службы специальную привилегированную учетную запись и сделать списки ACL для защищенного файла доступом только для этого пользователя (и всех администраторов машины). Вы можете запретить интерактивный вход в систему, используя эту учетную запись службы.
Если ваша главная задача — вмешательство интерактивных пользователей, вам может потребоваться политика, согласно которой локальный пользователь не запускается по умолчанию с правами локального администратора. К сожалению, вы не можете разрешить «частичные» права локального администратора — это все или ничего.
Я не знаю достаточно о DACL, чтобы сказать, можете ли вы достичь того, чего хотите, с их помощью. Я могу подумать о нескольких вещах, которые вы можете сделать, чтобы кому-то было сложнее подделать файл, в дополнение к ограничению его учетной записью локального администратора:
Это не Защищенный от любых нагрузок, но, похоже, ваша цель состоит в том, чтобы сделать его еще сложнее. Нет надежного способа остановить пользователя с правами администратора.