Изменение системной даты в Windows 7+ через C # Windows Service с пользователем домена [дубликаты]

1

любезно помогите мне решить следующую проблему.

Я пытаюсь изменить дату компьютера с помощью службы Windows С#. Следующая команда эта команда работает в приложении Windows С#, если я запустил ее как RUN AS Administrator. но служба не меняет системную дату по следующей команде. мой компьютер находится в домене, и я запускаю эту службу в качестве учетной записи службы домена. Кроме того, я добавляю аккаунт службы @домена в группу системного администратора.

string strCmdText = "/c DATE ";
System.Diagnostics.Process.Start("CMD.exe", strCmdText);

как я могу запустить cmd в качестве запуска в качестве администратора в службе С#, который уже запущен как пользователь домена.

Я пробовал все решения, которые предоставляются здесь, но проблема остается.

  • 0
    эта команда работает в Windows XP, которая не требует запуска от имени администратора, но в Windows 7 она должна работать от имени администратора
  • 0
    На вопрос, который я пометил как дубликат, есть ответ на запуск cmd с правами администратора. Попробуйте этот ответ.
Показать ещё 2 комментария
Теги:

1 ответ

0

Чтобы запустить CMD в привилегии администратора, вам просто нужно запустить приложение в привилегии администратора.

Но лучший способ вызвать программу с консоли будет использовать объект Process (не статический метод), где у вас больше опций, например. может считывать выходные данные и т.д.

Process p = new Process();
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "date";
p.StartInfo.Arguments = "";
p.Start();

Затем для ввода данных в приложение вам нужно использовать поле StandardInput класса Process

p.StandardInput.Write(string yourDate);

И в конце вы можете нежно ждать приложения, чтобы закончить работу.

p.WaitForExit();

Чтобы читать данные с вывода, вы должны использовать эту команду:

string output = p.StandardOutput.ReadToEnd();

Вы также можете прочитать эту строку за строкой (если вам нужно):

string[] oLines = output.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);
  • 1
    В этом случае должна быть p.StandardInput.Write Line

Ещё вопросы

Сообщество Overcoder
Наверх
Меню