Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2011, 14:23   #31
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) не вижу никаких проблем с тем, чтобы получить дату с любого компьютера в сети и сравнить её с текущей датой на компьютере.
Функций для работы с датами более чем предостаточно.
Вопрос в другом - каким образом программа ЗАПРЕТИТ пользователю изменять системную дату, если она уже работает с той датой, которую задаёт пользователь?!

2) почему Вы не рассматриваете решение с "поражением пользователя в правах" ? (как Вам предлагалось ранее). Тогда он НЕ СМОЖЕТ изменить дату. Даже если очень-очень-очень сильно захочет.
Создайте на компьютере учётную запись с правами администратора (чтобы не было потом мучительно больно!). Разумеется, если такой учётки не было до этого.
Удалите текущего пользователя из группы "Администраторы" и добавьте его в группу "Пользователи" (или в группу "Опытные пользователи").
Попытайтесь изменить дату. Убедитесь, что система не позволяет ему это сделать.

Всё. задача решена.

p.s. Вот уже три страницы темы, а я так и не могу понять, что у Вас за проблема, которую Вы так упорно пытаетесь решить!! Может быть, расскажете подробности, наконец?...

ДОБАВЛЕНО
посмотрите, вот ТУТ
Предлагается решение с реестром, которое ЗАПРЕТИТ текущему пользователю изменять дату и время (p.s. Правда, Ваша программа, запущенная из под учётки этого "поражённого" пользователя так же НЕ СМОЖЕТ изменить дату и время!)

Последний раз редактировалось mihali4; 02.11.2011 в 14:48.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.11.2011, 19:32   #32
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

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

У вас верхний регистр не работает ?
Или вы полагаете, что вашу "кашу" можно прочитать, не ломая глаза ?
Из правил раздела :

Цитата:
6. У нас принято писать грамотно, нормальным русским языком, с использованием знаков препинания. "Каша" или "удафф" будут тут же закрыты с выдачей штрафа.
Так что, если у вас проблемы с этим, проверяйте свои сообщения на орфографию в Ворде или браузере.
И не стоит писать аршинными буквами или стараться как-либо выделить именно свою "драгоценную" тему ! Модераторы это дело подправят, а вы получите штраф...
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны

Последний раз редактировалось mihali4; 03.11.2011 в 00:36.
betirsolt вне форума Ответить с цитированием
Старый 02.11.2011, 23:36   #33
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Чет, не понял, А нечего менять дату в пределах месяца?

Последний раз редактировалось mihali4; 03.11.2011 в 15:29.
psycho-coder вне форума Ответить с цитированием
Старый 03.11.2011, 00:08   #34
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Что тут не понятного? Стоит СУБД, текущие даты при записи берутся коряво - с локалок. К этим датам какие-то документы привязаны. Документы незакрытого периода правят "задним числом", видимо ПО тоже корявое, не дает такой возможности. А когда месяцем назад дату засандалят - рушится, например, баланс входящих-исходящих остатков.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось mihali4; 03.11.2011 в 00:37.
Аватар вне форума Ответить с цитированием
Старый 03.11.2011, 09:01   #35
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

betirsolt, так, с тем, что Вам надо сделать, более-менее определеились..

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

я вижу самый простой вариант решения - программка в автозагрузке.
скрыта с панели задач.
по таймеру проверяет текущую дату (например, раз в 10 секунд). если дата изменилась -
проверять - попадает ли в текущий месяц. если нет, устанавливает текущую (сегодняшнюю) дату (текущую брать при запуске программы с компьютера сервера).
Преимущества. Очень простой алгоритм, такое можно написать за часик. работать будет достаточно устойчиво.
Недостатки: пользователи могут снять задачу/процесс (или вырубить программу из автозагрузки). Будет грузить дополнительно процессор (пусть на единицы процентов, но всё же..)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.11.2011, 09:39   #36
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Аватар, Serge_Bliznykov вы меня правильно поняли, именно так я и хочу сделать, вопрос в том, как это сделать?
Цитата:
эта программка, которой Вы хотите контролировать изменение даты - это в помощь пользователям
Конечно в помощь, они не будут пытаться обойти программу, можно даже сказать что это программа чисто для того чтобы они случайно не перепутали даты.
Чтобы не ставить таймер, и чтобы не грузить комп я хотел отловить событие изменения даты,если это возможно,но если нет,то и таймер сойдет
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны

Последний раз редактировалось betirsolt; 03.11.2011 в 09:48.
betirsolt вне форума Ответить с цитированием
Старый 03.11.2011, 09:57   #37
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если это во благо пользователя и нет злонамеренных попыток ввода левых дат, то можно небольшую прогу сделать для изменения даты. Она контролирует корректность новой даты. Если еще пользователей научить только этой программкой пользоваться при необходимости правки даты, то проблема должна исчезнуть
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.11.2011, 10:00   #38
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

как взять дату с сервера?вот в чем вопрос
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 03.11.2011, 10:10   #39
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Попробуйте NetRemoteTOD
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.11.2011, 11:01   #40
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
как взять дату с сервера?вот в чем вопрос
Благодаря посту уважаемого Аватар я нашёл рабочий код для Delphi.

вот ЗДЕСЬ некий господин davidj
выложил такое решение:
Код:
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type

PTimeOfDayInfo = ^TTimeOfDayInfo;

TTimeOfDayInfo = record
todElapsedt: DWORD;
todMSecs: DWord;
todHours: DWord;
todMins: DWord;
todSecs: DWord;
todHunds: DWord;
todTimeZone: LongInt;
todTInterval: DWord;
todDay: DWord;
todMonth: DWord;
todYear: DWord;
todWeekday: DWord;
end;

TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Код:
function NetRemoteTOD(UncServerName: PWideChar;
var TimeOfDayInfo: PTimeOfDayInfo): DWORD; stdcall;
external 'NetAPI32.dll';

procedure TForm1.Button1Click(Sender: TObject);
var
TimeOfDayInfo: PTimeOfDayInfo;
begin
if NetRemoteTOD('\\P500', TimeOfDayInfo) = 0 then
ShowMessage(Format('%.02d:%.02d:%.02d', [TimeOfDayInfo.todHours,
TimeOfDayInfo.todMins,
TimeOfDayInfo.todSecs]));
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно запретить программе сбор информации о компе(всевозможные идентификаторы компьютара и ОС), чтобы не дать отослать е riotel Безопасность, Шифрование 10 02.11.2011 14:14
Не хочет изменять в БД cargo29 PHP 14 07.10.2011 13:54
запретить модераторам моего сайта изменять себе репутацию hon Свободное общение 9 30.09.2011 22:11
Можно ли запретить автопреобразования из числа в дату и обратно? m_v_v Microsoft Office Excel 1 01.06.2010 11:22
Как работать с большим числом? phobos Общие вопросы C/C++ 2 21.04.2009 07:05