Есть слабая тачка, для которой NT 3.51 - лучший выбор. Но большинство прог работать не хотят (особенно от MS) (. ИМХО большинство из них просто выделываются. Можно ли как-нибудь сделать так, что бы 3.51 говорила всем, что она NT 4.0?
Скорее всего, в этом не будет смысла, так как будут отсутствовать необходимые возможности (dll, функции в существующих dll и т.п.)
Да, конечно. Но так не всегда. К тому же в NT 3.51+Shell (Часть из NT 4.0: Explorer, Shell32, etc) работают довольно много программ. Пробовал ковырять kernel32.dll!GetVersionExW. Также есть ещё RtlGetVersion (точное имя не помню), но до неё ещё не добрался. Shell сам меняет версию на 4.0, но не билд. Основной вопрос: как подменить билд NT 3.51 на номер билда 4.0? .text:77F344B4 ; BOOL __stdcall GetVersionExW(LPOSVERSIONINFOW lpVersionInformation) .text:77F344B4 public GetVersionExW .text:77F344B4 GetVersionExW proc near ; CODE XREF: GetVersionExA+2Fp .text:77F344B4 .text:77F344B4 lpVersionInformation= dword ptr 4 .text:77F344B4 .text:77F344B4 mov ecx, [esp+lpVersionInformation] .text:77F344B8 cmp dword ptr [ecx], 114h .text:77F344BE jz short loc_77F344CB .text:77F344C0 push 7Ah ; dwErrCode .text:77F344C2 call SetLastError .text:77F344C7 xor eax, eax .text:77F344C9 jmp short locret_77F34507 .text:77F344CB ; ---------------------------------------------------------------------- ----- .text:77F344CB .text:77F344CB loc_77F344CB: ; CODE XREF: GetVersionExW+Aj .text:77F344CB movzx eax, word_77F613F8 .text:77F344D2 mov [ecx+4], eax .text:77F344D5 add ecx, 14h .text:77F344D8 movzx edx, word_77F61488 .text:77F344DF mov [ecx-0Ch], edx .text:77F344E2 movzx eax, word_77F61468 .text:77F344E9 mov dword ptr [ecx-4], 2 .text:77F344F0 mov [ecx-8], eax .text:77F344F3 push dword_77F613FC .text:77F344F9 push ecx .text:77F344FA call wcscpy .text:77F344FF add esp, 8 .text:77F34502 mov eax, 1 .text:77F34507 .text:77F34507 locret_77F34507: ; CODE XREF: GetVersionExW+15j .text:77F34507 retn 4 .text:77F34507 GetVersionExW endp Изменение movzx'ов ничего не дало. И что это за слова: word_77F613F8,word_77F61488,word_77F61468,dword_77F613FC? ЗЫ Как не хочется ставить Win95 ((((!!! Linux не предлагать - нужна винда, и не надо обьяснять какой он крутой - я сам знаю )
IMHO маразмом занимаешься. Добавь лучше памяти и поставь windows 2000 и 2000lite прогу, которая отрежет всё, что тебе не надо.
Можно пропатчить word'ы нужными значениями, только dwPlatformId придётся менять прямо в коде, но это вроде не нужно . Код (Text): typedef struct _OSVERSIONINFO { DWORD dwOSVersionInfoSize; // DWORD dwMajorVersion; // <- word_77F613F8 DWORD dwMinorVersion; // <- word_77F61488 DWORD dwBuildNumber; // <- word_77F61468 DWORD dwPlatformId; // <- .text:77F344E9 mov dword ptr [ecx-4], 2 TCHAR szCSDVersion[128]; // <- offset_77F613FC - на самом деле это адрес строки } OSVERSIONINFO;
s0larian Дык чё ставить? Не куда! Нету SIMM'ов 72-pin! Да и дорого. S_T_A_S_ Пытался, чё то не получилось. Ладно, ща будем фиксить другим способом ))