Заблокировать пользователя от изменения системной даты / времени - PullRequest
3 голосов
/ 29 декабря 2010

У нас есть приложение для Windows (C # .net), и мы будем предоставлять установщики клиенту. Требование заключается в том, что после установки приложения пользователь не должен иметь возможности редактировать системное время / дату. Это сделано для того, чтобы убедиться, что даты / отчеты, созданные приложением, не манипулируются. Моя целевая ОС - Win-XP Каков наилучший способ сделать это?

Предоставляет ли ОС какие-либо средства для этого?

Клиентский компьютер является автономным и не подключен ни к одной сети.

Заранее спасибо

Ответы [ 8 ]

5 голосов
/ 29 декабря 2010

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

Если вам действительно нужен надежный источник времени, то сделайте так: Напишите веб-службу или используйте существующую службу NTP, с которой ваше приложение связывается, и используйте время, возвращенное этой доверенной службой. Затем используйте методы подписи, чтобы впоследствии не допустить искажения отчетов.

Недостаток: вам нужен доступ в интернет. Возможно, клиент установит NTP-сервер в своей сети (контроллеры домена Windows AFAIK могут сделать это автоматически?) И использует его, но затем клиент может снова вмешаться в него.

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

3 голосов
/ 29 декабря 2010

Вы блокируете это, изменяя политику Windows. Это можно сделать либо из Active Directory (групповой политики), либо с помощью локальной политики безопасности.

См. Ссылку: http://www.sevenforums.com/tutorials/113557-date-time-allow-prevent-users-groups-changing.html

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

3 голосов
/ 29 декабря 2010

Это больше похоже на вопрос о сбое сервера;Интересно, если «групповая политика» является способом сделать это для каждой машины;

Однако - для ответа программирование - почему бы не получить время от центрального сервера, когда вашприложение запускается?Вычислите смещение от местного времени и примените его ко всему вашему приложению.

Если требуется строгая защита, вам может потребоваться подписать ответ от сервера, чтобы предотвратить подделку (в частности, черезхосты "и т. д.).

2 голосов
/ 29 декабря 2010

Я не думаю, что это возможно, потому что это связано с групповой политикой, а не с изменением системных настроек вашим приложением, что помешает пользователям изменять системную дату и время.Пройдите через это, это может пригодиться -

  1. Если XP Pro, используйте редактор групповой политики для создания детальных разрешений. Начало> Запуск gpedit.msc [enter]

  2. Если XP Home, посмотрите на консоль безопасности Дуга Нокса и посмотрите, будет ли она работать за вас: http://www.dougknox.com

1 голос
/ 29 декабря 2010

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

1 голос
/ 29 декабря 2010

Для этого вам нужно реализовать локальную или групповую политику.Я не знаю, можете ли вы легко манипулировать этим из C #.

1 голос
/ 29 декабря 2010

Только через Политика домена - администраторы должны запретить пользователю не связываться со временем.

В Windows 2008 есть возможность синхронизировать время с интернетом.

Альтернативой является то, что вы создаете веб-сервис, к которому ваше приложение может получить доступ через Интернет, и получают неизмененное время.

1 голос
/ 29 декабря 2010

Нет, вы не можете запретить базовую функцию ОС, подобную этой (кроме групповой политики ... но не программно, особенно если у пользователей есть права администратора). Если вы можете сделать это программным путем, это может быть легко использовано для неправильного использования (например, изменение времени и нарушение аутентификации Kerberos).

...