Windows datetime? - PullRequest
       3

Windows datetime?

0 голосов
/ 15 октября 2011

Я внедряю пробную версию созданного мною программного обеспечения, и теперь я хочу отследить любые изменения в DateTime, сделанные пользователем.

Я пытался найти, как получить системное время в BIOS, но мне не повезло, так что это единственный способ сделать это.

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

1 Ответ

3 голосов
/ 15 октября 2011

Вы делаете это не так, как хотите.Это не сработает.

Вы проверяете с помощью авторитетного интернет-сервера времени или чего-то подобного (или вы устанавливаете сервер с веб-службой, которая возвращает текущее время).Если вы не знаете, как это сделать, просто отметьте http://tycho.usno.navy.mil/cgi-bin/timer.pl

Я добавлю, что вы можете прочитать здесь Предотвратить обход защиты от копирования на основе времени? если вы нене верь мне.

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

Добавить ссылку на C:\Windows\System32\wuapi.dll.Он сгенерирует dll "interop" и добавит ссылку на него.

using WUApiLib;

UpdateSession uSession = new UpdateSession();
IUpdateSearcher uSearcher = uSession.CreateUpdateSearcher();
uSearcher.Online = false;
try
{
    ISearchResult sResult = uSearcher.Search("IsInstalled=1 OR IsInstalled=0");
    // This one!!!!
    var maxTime = sResult.Updates.OfType<IUpdate>().Max(p => p.LastDeploymentChangeTime);
}
catch (Exception ex)
{
    Console.WriteLine("Something went wrong: " + ex.Message);
} 

О ... Я предполагал, что вы используете C # :-) Если вы используете C ++, вы можете конвертировать код.В следующий раз вы научитесь ставить тег языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...