Nano Hash - криптовалюты, майнинг, программирование

Синхронизировать время с NTP-серверами без прав администратора

Я написал приложение, которое захватывает время с NTP-сервера и изменяет системное время моей машины. Это работает хорошо, но синхронизация времени только в том случае, если мои приложения запускаются с правами администратора. Так вот вопрос, как запустить без админских прав, но сохранить функционал? Я устанавливаю системное время с помощью функции WinAPI SetSystemTime.

13.12.2018

  • Сама функция документирует это: вам нужна учетная запись, способная получить привилегию SE_SYSTEMTIME_NAME. Без прав администратора это означает, что учетной записи, под которой работает приложение, должно быть предоставлено право изменить системное время через локальную политику безопасности (или с помощью secedit, если вы не хотите использовать графический интерфейс). 13.12.2018
  • Я запускаю свое приложение из своей учетной записи после предоставления мне привилегии изменять системное время, но без прав администратора приложение не работает 13.12.2018
  • Тогда вы, вероятно, делаете что-то не так. Я знаю, что эта настройка работает, потому что существующие инструменты для синхронизации времени (например, этот) работать нормально без прав администратора после предоставления этого права. (Кстати, использование существующего инструмента для синхронизации времени, вероятно, является лучшей идеей, чем развертывание собственного — см. также w32tm.) 13.12.2018
  • Если вы запускаете свое приложение под учетной записью, которая является членом администраторов, но без повышения прав, я полагаю, что подход UAC с раздельным токеном также может лишить учетную запись любых особых привилегий, которые были предоставлены ей отдельно, помимо того, что она не делает ее администратором. . Если это так, вам нужно либо повысить права, либо использовать учетную запись, которая не является администратором. 13.12.2018
  • @JeroenMostert, эта информация актуальна для Windows Server 2012 или Windows 10? 13.12.2018
  • Насколько я знаю, все, что я сказал, относится ко всем версиям Windows, начиная с XP (за исключением того, что я не знаю, как взаимодействуют UAC и привилегия системного времени, это предположение). W7 представил новый API для улучшения времени, вот и все. В моей компании мы все еще используем vanilla ntpd, скомпилированный для Win32, в качестве службы для синхронизации времени (потому что встроенные службы недостаточно хороши) с установщиком Meinberg. 13.12.2018
  • @JeroenMostert, ваше последнее предложение было явно правильным. После использования учетной записи без прав администратора мое приложение работает должным образом. Большое спасибо! 13.12.2018

Ответы:


1

Вы можете сделать это несколькими способами (есть наиболее подходящий для вас).

  1. Олицетворение личности => описано в примере в этом адрес

    WindowsIdentity identity = new WindowsIdentity(accessToken); WindowsImpersonationContext context = identity.Impersonate() ;

  2. runas глагол

    ProcessStartInfo startInfo = new ProcessStartInfo (m_strInstallUtil, strExePath); startInfo.Verb = "runas"; System.Diagnostics.Process.Start (startInfo);

имейте в виду, что UAC будет предложено использовать второй метод.

  1. PrincipalPermissin (если пользователь является членом группы администраторов)

    [PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]

13.12.2018
Новые материалы

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

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..