Здравейте,
има ли начин да се запише като файл и после да се възстанови от текущото си състояние дадена програма? Трябва ми за една флаш игра, която няма запис и искам да продължа от някакъ запис нататък.
Благодаря предварително.
Здравейте,
има ли начин да се запише като файл и после да се възстанови от текущото си състояние дадена програма? Трябва ми за една флаш игра, която няма запис и искам да продължа от някакъ запис нататък.
Благодаря предварително.
hybernate на windows прави точно това (или вариантът suspend to ram)
Да, за хибернирането знам, но то не ми върши работа. Искам просто да го запиша във файл и да мога да си играя, когато поискам, и когато ме "утрепят" в играта, да не губя 4-5 часа, за да стигна нивото до което съм
Сигурен ли си, че в играта няма някакъв автоматичен "save", в смисъл - записите между нивата да се пазят в кеша на браузъра (както е при доста флаш-игри)? Все пак, ако играта е времеемка, е тъпо да няма начин да продължиш оттам, докъдето си стигнал. Ако желаеш, дай линк, да я видим игричката.
Дори да се измисли решение за конкретната игра, въпросът звучи много интересно в общия случай.
Някакъв тул, ползващ възможностите на операционната система, който да следи процесите и да може да ги сваля на файл? Звучи ми възможно.
Обаче M$ ако са го направили, сигурно ще го продават отделно...
А ако някой друг го е направил, те първо ще купят него (както стана със Sysinternals), а после...
ако играта няма опция от вида :
"save to file" ...
нищо не може да се направи ... - все едно навремето на "Prince of Persia" да имаш някакви сейфове
всъщност - ако се замислим сега ...(или поне аз ако се замисля) :
- това и беше хубавото на играта - едни невъзможни 59 минути и 59 секунди да се оправиш с всички препятствия и пречки .. и други препятствия ..
и накрая да ПОБЕДИШ !
добавено
сега пък се сетих, че общо взето десетина години след като съм се бил мъчил с принса на персия - вече имаше и "сейфове" за последното ниво и с 59 минути оставащи ...
ама - това си е хак и крак, и ръка , и HexEdit-ор ...
Едно, ъъъ, тромавичко решение е всичкото това игране да се случва във виртуална машина под VirtualPC или VMWare например - за 2-рата поне съм сигурен, че може да прави "снимки" на състояния на системата, към които да се връщаш. Проблемът е в загубата на производителност - не знам доколко флаш-графиката се ускорява от видеокартата, но под vmware процесора сам трябва да върши почти всичко...
Не се имам за спец по Windows, не познавам тулче, за което пита Bibi, но на първо четене ми хрумна следното: когато настроите ХР да влиза в хибернация, ОС заделя на системния дял място създавайки файла hiberfil.sys, който е системен и в който впоследствие ще се запишат параметрите на ОС в хибернация. Този файл за да се вижда чрез Windows explorer-a трябва в Tools->Folder Option->View да се зададе да се виждат системните и скритите файлове.
Та идеята ми е да се влезе в режим хибернация, при което ХР записва в hiberfil.sys текущото състояние на ОС и в частност РАМ-а и РС се изключва. После се стартира РС-то от Live CD или флашка и този файл hiberfil.sys може да бъде записан. Работата с РС-то може да продължи, а ако искаме да се върнем точно към момента преди записаната хибернация, просто отново вкарваме ОС в хибернация, чрез рестарт от Live CD или флашка възстановяваме стария файл hiberfil.sys копирайки го на мястото на създадения от ХР и рестартираме РС-то.
Ето и 2 полезни линка:
http://support.microsoft.com/kb/307017/en-us
http://support.microsoft.com/kb/555569/en-us
а също и колкото искате още други свързани с хибернацията:
http://support.microsoft.com/search/...y=5&range=1-20
Nota bene:
Това са мои чисто теоретични разсъждения, не ми се е налагало да го прилагам това. Ако на triteXa му се иска - да го пробва.
Също така, ако някой друг знае тулче или по-елегантен начин - да пише - ще се радвам да обогатя знанията си.
Ако пък някъде бъркам - моля поправете ме обосновано - това също е опит - нали за един бит трима небити дават !
http://www.topshareware.com/SmartClo...load-35403.htm
Many common PC tasks require you to close all currently running programs. For example, burning a CD and defragmenting or scanning hard drives can slow down or even fail when other processes 'kick in', like background programs, the screen saver or a scheduled task.
You could manually exit each program one by one, disable the screen saver?That is when SmartClose comes in! SmartClose will automatically close all running programs, disable the screen saver and halt all other processes that can interrupt without asking.
But what when you have finished the task that required you to use SmartClose and you want to restore the programs and such that were disabled? Restart the computer? No, because before SmartClose closes or disables anything, it will first save the current state of the system (running programs, screen saver? to a 'system snapshot', that can be opened and restored again by SmartClose.
добавено: да ама не не прави snapshot
Аvе Tommorow,
откъде го изрови туй посред нощите ,
че и на всичкото отгоре:
Пробва ли го наистина? Щото от описанието оставам с впечатление, че трябва да се затворят всички задачи (визират се изрично фоновите) освен една, тъй че все пак РС-то работи, но това едва ли прави снимка на състоянието на РАМ-а например по същия начин както го прави хибернацията.Първоначално публикувано от Tommorow
Благодаря на всички отзовали се.
А аз имам спомени за такава програма, но беше доста отдавна. Тази програма правеше нещо като хибернация, т.е. записваше текущото състояние на паметта и после можеше да се възстанови, но съм забравил как се казва. Затова и питам, може някой да се сети за нещо подобно ...
Специално за игри по времето на добрия стар DOS се ползваше програма наречена GameWizard32 - актуална версия за тогава - 2.0. Тя продължи да се разработва и действа и под 32bit protected mode и така до ден днешен*. Може да търси стойност в паметта и после (след промяна) да търси новото показание в резултатите и така докато намериш точно на кой адрес ти е примерно броя на животите или кръвта или парите и т.н. След което има възможност за замразяване на дадената клетка или промяна и т.н. Правеха се и таблици с адресите, които си съхраняваш за многократна употреба - да не търсиш пак следващия път. Имаше и възможност за запис на нещо си (свече не помня какво записваше, но беше нещо като SAVE GAME - а може и да се бъркам с някой емулатор за Правец82 или конзола). Последния път като го търсех попаднах и на още 2-3 програми от този род.
*Сега като се поразтърсих не мога да я намеря из нета, но имам някаква версия някъде по дисковете.
Попаднах на други подобни програми - Quick Memory Editor , ArtMoney
Може и да ти свършат работа в конкретния случай.
Без да се замислям надълбоко, но ми се струва трудна, ако не невъзможна задачка.Първоначално публикувано от Bibi
Освен dump на алокираните части от паметта, трябва да се запише и състояние на регистрите на процесора като минимум. После при reload трябва да се възстановят тези стойности, а хич не е ясно дали тези сегменти памет ще са свободни и как да се заредят регистрите на процесора. И какво ще стане при конфликт. Преалокиране на dump-натата памет май не става. Освобождаването на заетите адреси с преместване на активно ползващите я в момента процеси ми се вижда по-постижимо, но далеч не гарантирано. А с процесора?
И т.н. сложнотии...
Еее това е концепция от времето на 8086... оттогава нещата се попромениха. Гореизброените неща се извършват от мениджъра на процесите и виртуалната памет в ядрото на ОС десетки хиляди пъти в секунда. Локалната памет на всеки процес е не само напълно преместваема, но и фрагментируема - всяка страница може да е пръсната къде ли не. Важи и за локалния стек - нали състоянието на процесора се възстановява оттам при контекстното превключване за възстановяване на процеса. Затова е и двойното преобразуване на адреси, което коства толкова много междинни действия и половината кеш (за адреси) на съвременен процесор - локален номер на страница -> виртуален глобален -> физически (ако не е на swap). Всъщност проблемът не е дали може да се "замрази" даден процес - Windows NT вътрешно поддържа тази възможност, макар и достъпна чрез трети програми като Process Explorer на Sysinternals, a АКО можеше да се запише във фаил цялото му състояние, дали това щеше да е достатъчно за коректното му възстановяване - да не забравяме, че през е важна и "околната ситуация" в останалата част от системата - междувременно са променяни файлове, registry, други ресурси, предоставяни на процеса от ОС, та дори и системния таймер. Същото важи и за създаване на копия на hiberfil.sys - лично аз се съмнявам, че подобен подход би сработил коректно, поради което смятам, че подобен инструмент не може да се направи като хората.Първоначално публикувано от pimpirlit
Колкото до програмки като ArtMoney, обикновено издирващи из променливите в пространството заделено за процеса разни броячи за животи, точки и т.н., трудно ще се намери какво ще свърши работа, особено из сложен процес като този на браузър или флаш-плейър.