Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск cmd.exe из службы Windows 7,8, служба Windows не запускает команду 
:(
    Опции темы
lazaruslong
  Дата 28.11.2012, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 25.5.2012

Репутация: нет
Всего: нет



  Доброго времени суток!

  Задача тривиальная: есть файл, который нужно контролировать. Если он меняется (содержимое, права доступа, атрибуты), то подменять его на спрятанный в закромах и дополнительно изменять права доступа и атрибуты на стандартные.
  Раньше справлялся с подобной задачей используя cmd скрипты + планировщик заданий, но решил перейти на новый уровень - создать контролирующую процедуру.
  Она каждые n-минут проверяет файл и решает, что с ним делать: не менять, если он оригинальный; менять, если его подменили.

  Я завис на проблеме сброса к стандартным прав доступа на файл и его родительскую директорию (подобно тому, что делает команда icacls C:\ВашаПапка /reset /T) поскольку при запуске службы и этой команды в ней ничего не происходит (хотя при запуке из консоли работает как часы).

Код

            if (file1.Length == file2.Length) //сравнение файлов
            {
                AddLog("File OK! " + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss")); //всё хорошо
            }
            else
            {
                AddLog("File NOT OK! " + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss")); //нужно принимать меры
                Process.Start("cmd.exe", "/C " + "icacls C:\\Users\\%USERNAME%\\AppData\\Roaming\\target\\ /reset /T"); //сброс прав доступа
                Thread.Sleep(1000); //ждем 1 секунду
                File.SetAttributes(file1path, FileAttributes.Normal); //сброс атрибутов
                File.Delete(file1path); //удаляем нерадивый файлик
                File.Copy(file2path, file1path); //заменяем заранее приготовленным
                File.SetAttributes(file1path, FileAttributes.Hidden | FileAttributes.ReadOnly); //устанавливаем стандартные атрибуты
                Process.Start("cmd.exe", "/C " + "secedit /configure /db temp.sdb /cfg relutp.inf"); //устанавливаем стандартные права доступа
                AddLog("File changed at " + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss")); //задача решена
            }


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

   Заранее благодарю за помощь!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.