перезаписать себя во время исполнения

Тема в разделе "WASM.BEGINNERS", создана пользователем nc, 4 июн 2007.

  1. nc

    nc New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2007
    Сообщения:
    61
    при запуске программы, её exe-файл на диске, как правило, блокируется системой от изменений, так вот,
    можно ли его подменить другим файлом, причём обновление должна совершить сама же запущенная программа ?
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    да. напрямую работа с фс
     
  3. nc

    nc New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2007
    Сообщения:
    61
    напрямую нельзя, файловые системы могут быть разными
     
  4. nc

    nc New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2007
    Сообщения:
    61
    нужно снять блокировку файла от изменений...
    причём это должно работать на всех системах семейства Windows
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    1) Документированный вариант - произвести отложенное копирование и сделать перезагрузку компа.
    2) Другой нормальный вариант - сделать мини-программку которая скопирует старый файл в новый и запустит новый, а из основной программы сделать CreateProcess / ExitProcess и все. Мини-программка скопирует файлы нормально, потому как основная программа уже завершались и запустит новую.
    3) Ну и совершенно бешеный вариант - подгрузить драйвер ядра или иным способов перейти в кернел мод, а там уже сменить права доступа к файлу проги на read/write.
     
  6. shinoda

    shinoda New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2007
    Сообщения:
    36
    Ms-rem когда-то задавал этот вопрос. Поищи по форуму
     
  7. nc

    nc New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2007
    Сообщения:
    61
    не нашёл :dntknw:
     
  8. nc

    nc New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2007
    Сообщения:
    61
    с чтением файла нашёл, а мне запись нужна
     
  9. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    В юзермоде без помощи постороннего кода (который будет исполнятья после завершения твоего процесса) это в общем случае сделать нельзя. В ядре есть не мало способов - почитай, хотя бы, статью ms-rem про работу с занятыми файлами.

    Вообще, мне кажется это уже не первая подобная тема за последние пару дней...
     
  10. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Да, вот эта тема http://wasm.ru/forum/viewtopic.php?id=21142