![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| yarus88 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
Люди добрые подскажите.
Нужно создать экзешник который при запуске сам в себя записывает информацию, как это можно реализовать? |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
yarus88, какую информацию, зачем?
-------------------- СУВ, Partizan. |
|||
|
||||
| yarus88 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
дату последнего открытия.... задание такое.....
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
yarus88, в windows файл блокируется на запись на время выполнения (осталось еще со времен DOS-а). Вам либо надо делать копию себя и "перезапускаться" либо искать в таблицах лоченых дескрипторов свой (что далеко не тривиальная задача и очень завязана на версию винды).....
В общем простой ответ - копировать себя и из копии что надо делать. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Heinzz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 12.12.2008 Где: .net Репутация: 5 Всего: 9 |
Однако не стоит спешить запускать программу повторно сразу, подождите 7сек. Это конечно можно обойти, но...
|
|||
|
||||
| yarus88 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
Heinzz, огромнейшее тебе спасибо!
Тока есть пару вопросов: 1) Зачем нам ждать 7 секунд? 2)что такое args.Length == 0 и a[rgs[0], за что они отвечают? |
|||
|
||||
| Heinzz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 12.12.2008 Где: .net Репутация: 5 Всего: 9 |
перезаписи требуют какого-то времени.
args - массив аргументов командной строки |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
Heinzz, использовать мьютексы (или семафоры или др. средства синхронизации) вполне возможно, нежели "ждать 7 секунд"...
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Heinzz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 12.12.2008 Где: .net Репутация: 5 Всего: 9 |
было бы интересно посмотреть пример. Я ими никогда не пользовался
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
эх и эх.. а еще MCTS (я правди никогда не верил особо сертификатам)...
ну примерно так... конечно, стоит делать следующую штуку: 1) копируем себя 2) запускаем копию передав аргументом свое местоположение 3) выходим убедившись что копия запустилась (как раз семафор их примера поможет) 4) копия делает изменения 5) копия запускает сервер с параметром "всё сделано" (параметр нужен чтобы сервер еще раз не повторил итерацию начиная с п1) .... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Heinzz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 12.12.2008 Где: .net Репутация: 5 Всего: 9 |
что-то семафоры не сообщают когда файл разлочится
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
Heinzz, семафор умрет (с эксепшеном) при ожидании в клиенте, когда винда выгрузит процесс, владеющим им (сервер) (если сам сервер не зарелизит его)... чуете чем пахнет?) Мы можем с бОльшой долей вероятности сказать что после этого момента родительский экзешник будет освобожден если не сразу, то "почти сразу" - а дальше начинать писать (или отлочивать семафор перед выходом самым, без эксепшенов чтобы) .... просто при записи надо делать цикл в три итерации с задержкой (небольшой, типа i*500 мсек) при ошибке....
Это сообщение отредактировал(а) jonie - 20.5.2010, 22:17 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Heinzz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 12.12.2008 Где: .net Репутация: 5 Всего: 9 |
||||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |