2015-03-29 2 views
-1

Итак, вот сценарий. Я пишу установщик для своего приложения. Вот проблема. Установщик повышен пользователем от администратора.Переместить файл в другое место

В настоящее время работает администратор. Мой вопрос: как я могу переместить этот файл в другое место во время его работы? Если я попытаюсь, я получаю сообщение об ошибке «Доступ лишен» ... очевидно, так как файл уже используется. Важно отметить, что файл, который я хочу переместить, сам по себе. Так что я могу взять текущий файл и переместиться в другой каталог.

Так что я хочу, чтобы мой поток программы будет что-то вроде этого:

request_admin_From_user() // done 
start_admin_elevated_process() // done 
move_admin_process_to_another_directory() // how? if the process is running.. 
+1

* «Как перенести процессы администрирования в другое место?» * Что это значит? –

+0

Итак, процесс, который является администратором, в настоящее время запущен. Мой вопрос: как я могу переместить этот файл в другое место во время его работы? Если я попытаюсь, я получаю сообщение об ошибке «Доступ лишен» ... очевидно, так как файл уже используется. Важно отметить, что файл, который я хочу переместить, сам по себе. Так что я могу взять текущий файл и переместиться в другой каталог. –

+0

Итак, ваш установщик должен переместиться в целевую папку? Вероятно, вы должны просто сделать копию - как правило, нельзя перемещать открытый файл. Однако это не имеет никакого отношения к высоте. –

ответ

1

Процесс может не двигаться свой собственный .exe файл в то время как он работает, но он может:

  1. скопируйте файл и затем удалите оригинал позднее.

  2. Запланированный задерживаемый ход с использованием MoveFileEx() с флагом MOVEFILE_DELAY_UNTIL_REBOOT для выполнения перехода на следующую перезагрузку ОС. Это также можно использовать для удаления файла при перезагрузке.