2011-01-05 17 views
7

Mam projekt, który zbudowałem w Visual Studio 2010 na komputerze z systemem Windows 7. Kompiluje i działa bez problemu.Niepoprawna aplikacja Win32

Kiedy umieścić aplikację na maszynie XP z .NET 4 nie spływa z błędem „nie jest prawidłową aplikacją systemu Win32”

Próbowałem wszystkiego tutaj bez powodzenia: http://blogs.msdn.com/b/dsvc/archive/2009/06/19/troubleshooting-not-a-valid-win32-application-error-at-the-startup.aspx

Nie mam pojęcia, co jest nie tak. Jakieś pomysły?

Dzięki

FYI: bindump:

Microsoft (R) COFF/PE Dumper Version 10.00.30319.01 
Copyright (C) Microsoft Corporation. All rights reserved. 


Dump of file TimeKeeper.exe 

PE signature found 

File Type: EXECUTABLE IMAGE 

FILE HEADER VALUES 
      8664 machine (x64) 
       2 number of sections 
     4D24EED9 time date stamp Thu Jan 06 09:21:13 2011 
       0 file pointer to symbol table 
       0 number of symbols 
       F0 size of optional header 
       22 characteristics 
        Executable 
        Application can handle large (>2GB) addresses 

OPTIONAL HEADER VALUES 
      20B magiC# (PE32+) 
      8.00 linker version 
      92600 size of code 
      600 size of initialized data 
       0 size of uninitialized data 
       0 entry point 
      2000 base of code 
      400000 image base (0000000000400000 to 0000000000497FFF) 
      2000 section alignment 
      200 file alignment 
      4.00 operating system version 
      0.00 image version 
      4.00 subsystem version 
       0 Win32 version 
      98000 size of image 
      200 size of headers 
       0 checksum 
       2 subsystem (Windows GUI) 
      8540 DLL characteristics 
        Dynamic base 
        NX compatible 
        No structured exception handler 
        Terminal Server Aware 
      400000 size of stack reserve 
      4000 size of stack commit 
      100000 size of heap reserve 
      2000 size of heap commit 
       0 loader flags 
       10 number of directories 
       0 [  0] RVA [size] of Export Directory 
       0 [  0] RVA [size] of Import Directory 
      96000 [  598] RVA [size] of Resource Directory 
       0 [  0] RVA [size] of Exception Directory 
       0 [  0] RVA [size] of Certificates Directory 
       0 [  0] RVA [size] of Base Relocation Directory 
      94454 [  1C] RVA [size] of Debug Directory 
       0 [  0] RVA [size] of Architecture Directory 
       0 [  0] RVA [size] of Global Pointer Directory 
       0 [  0] RVA [size] of Thread Storage Directory 
       0 [  0] RVA [size] of Load Configuration Directory 
       0 [  0] RVA [size] of Bound Import Directory 
       0 [  0] RVA [size] of Import Address Table Directory 
       0 [  0] RVA [size] of Delay Import Directory 
      2000 [  48] RVA [size] of COM Descriptor Directory 
       0 [  0] RVA [size] of Reserved Directory 


SECTION HEADER #1 
    .text name 
    924FE virtual size 
    2000 virtual address (0000000000402000 to 00000000004944FD) 
    92600 size of raw data 
    200 file pointer to raw data (00000200 to 000927FF) 
     0 file pointer to relocation table 
     0 file pointer to line numbers 
     0 number of relocations 
     0 number of line numbers 
60000020 flags 
     Code 
     Execute Read 

    Debug Directories 

     Time Type  Size  RVA Pointer 
    -------- ------ -------- -------- -------- 
    4D24EED9 cv   8E 00094470 92670 Format: RSDS, {07D03CC8-7510-4698-B5EB-6DC50714B88D}, 3, C:\Users\Mitch\Documents\Timekeeper 24.12.2010\client\TimeKeeper 24-12-2010\TimeKeeper\obj\x86\Release\TimeKeeper.pdb 

SECTION HEADER #2 
    .rsrc name 
    598 virtual size 
    96000 virtual address (0000000000496000 to 0000000000496597) 
    600 size of raw data 
    92800 file pointer to raw data (00092800 to 00092DFF) 
     0 file pointer to relocation table 
     0 file pointer to line numbers 
     0 number of relocations 
     0 number of line numbers 
40000040 flags 
     Initialized Data 
     Read Only 

    Summary 

     2000 .rsrc 
     94000 .text 
+3

Masz zbudowany aplikacji 64 bit - jest XP maszyna 64-bitowa? Jeśli nie, to byłby problem. Komputery 32-bitowe nie mogą uruchamiać programów zbudowanych na architekturach 64-bitowych. – brady

Odpowiedz

20

We właściwościach projektu, projekt jest kierowanie "64" zamiast "Dowolny procesora"? (Wydaje się mówić "maszyna (x64)" w nagłówku bindump, co brzmi jak może być problem)

Czy to jest targetowanie .net 4 pełny czy profil klienta? Jeśli jest pełny, sprawdź, czy Twój XP ma zainstalowany pełny profil, a nie tylko profil klienta.

(Jest mało prawdopodobne, aby być powiązane, ale) Czy Redist Visual Studio 2010 zainstalowany na maszynie XP?

Sprawdź, czy plik nie został uszkodzony podczas transferu na maszynę Win32 (np skopiować go z powrotem i diff go lub uruchomić go na swoim polu Win7)

+0

Może to być również problem przyszłościowy. Używam pełnego profilu, ale właśnie pobrałem pierwszy wynik w Google dla .NET 4. Czy jest to tylko profil klienta? – Mitch

+0

Czasami trudno jest powiedzieć, ale pierwsze trafienie dostałem: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992&displaylang=en. Pobieranie ma _full_ w nazwie, więc zakładam, że jest to pełny profil. (Zasadniczo powinieneś kierować reklamy na profil Klienta, chyba że konkretnie potrzebujesz czegoś ekstra, które jest tylko w profilu Pełny, a wtedy nie ma znaczenia, który z nich został zainstalowany). –