Forum: PC-Programmierung C# x86 Service


von funky (Gast)


Lesenswert?

Hi,

ich habe einen Service mit C# Visual Studio 2012 und .Net 4 geschrieben. 
Unter einen x64 System läuft der auch prima.
Der soll jetzt auch auch auf einem x32 System laufen, also alles 
umgestellt auf x32, net 4 x32 auf einer alten WinXP Maschine 
installiert, aber der Service geht nicht. Der Service Startvorgang 
bricht mit Meldung "Fehler 193: 0xc1"
Visual Studio erstellt da immer eine xxx.vshost.exe Datei, und auf dem 
x32 System sagt diese mir, sie wäre keine gültige x32 Anwendung.

Habe dann testweise mal eine normale Applikation erstellt, und die 
startet je nach Build Option auf dem dem x32 System und auf dem x64 
System. Zu blöd, die korrekten Einstellungen zu machen bin ich also 
anscheinend doch nicht.

Hat jemand eine Idee was ich da falsch mache? Oder Ist die Konstellation 
Service, x32, WinXP und .Net4 einfach ungünstig?

Danke für Tips

von Peter II (Gast)


Lesenswert?

Du kannst auch einfach mal den Dienst direkt starten, einfach in die 
Main mal eine Ausgabe reinmachen, dann kannst du sicher sein das es 
wirklich für x86 ist.

Aber warum legst du überhaupt die Platform fest?

von funky (Gast)


Lesenswert?

ja hab es dann später auch mit anyCPU kompiliert. Ändert aber nix daran.
Ein normales Programm bekomme ich zum laufen, mein Service crasht auf 
x32, auf x64 läufts(astrein natürlich)

von Peter II (Gast)


Lesenswert?

funky schrieb:
> Ein normales Programm bekomme ich zum laufen, mein Service crasht auf
> x32, auf x64 läufts(astrein natürlich)

was passiert wenn du den Service als "normales" Programm startest?

von funky (Gast)


Lesenswert?

Auf dem x64 System kommt die Meldung, dass der Service nicht direkt 
gestartet werden kann, auf x32 das es keine zulässige x32 Anwendung ist


Hier ein Output mit dumpbin /headers zu dem File
1
PE signature found
2
3
File Type: EXECUTABLE IMAGE
4
5
FILE HEADER VALUES
6
             14C machine (x86)
7
               3 number of sections
8
        56431792 time date stamp Wed Nov 11 11:25:22 2015
9
               0 file pointer to symbol table
10
               0 number of symbols
11
              E0 size of optional header
12
             102 characteristics
13
                   Executable
14
                   32 bit word machine
15
16
OPTIONAL HEADER VALUES
17
             10B magic # (PE32)
18
           11.00 linker version
19
            2400 size of code
20
             800 size of initialized data
21
               0 size of uninitialized data
22
            42FE entry point (004042FE)
23
            2000 base of code
24
            6000 base of data
25
          400000 image base (00400000 to 00409FFF)
26
            2000 section alignment
27
             200 file alignment
28
            4.00 operating system version
29
            0.00 image version
30
            6.00 subsystem version
31
               0 Win32 version
32
            A000 size of image
33
             200 size of headers
34
               0 checksum
35
               2 subsystem (Windows GUI)
36
            8560 DLL characteristics
37
                   High Entropy Virtual Addresses
38
                   Dynamic base
39
                   NX compatible
40
                   No structured exception handler
41
                   Terminal Server Aware
42
          100000 size of stack reserve
43
            1000 size of stack commit
44
          100000 size of heap reserve
45
            1000 size of heap commit
46
               0 loader flags
47
              10 number of directories
48
               0 [       0] RVA [size] of Export Directory
49
            42A8 [      53] RVA [size] of Import Directory
50
            6000 [     5E8] RVA [size] of Resource Directory
51
               0 [       0] RVA [size] of Exception Directory
52
               0 [       0] RVA [size] of Certificates Directory
53
            8000 [       C] RVA [size] of Base Relocation Directory
54
            4170 [      1C] RVA [size] of Debug Directory
55
               0 [       0] RVA [size] of Architecture Directory
56
               0 [       0] RVA [size] of Global Pointer Directory
57
               0 [       0] RVA [size] of Thread Storage Directory
58
               0 [       0] RVA [size] of Load Configuration Directory
59
               0 [       0] RVA [size] of Bound Import Directory
60
            2000 [       8] RVA [size] of Import Address Table Directory
61
               0 [       0] RVA [size] of Delay Import Directory
62
            2008 [      48] RVA [size] of COM Descriptor Directory
63
               0 [       0] RVA [size] of Reserved Directory
64
65
66
SECTION HEADER #1
67
   .text name
68
    2304 virtual size
69
    2000 virtual address (00402000 to 00404303)
70
    2400 size of raw data
71
     200 file pointer to raw data (00000200 to 000025FF)
72
       0 file pointer to relocation table
73
       0 file pointer to line numbers
74
       0 number of relocations
75
       0 number of line numbers
76
60000020 flags
77
         Code
78
         Execute Read
79
80
  Debug Directories
81
82
        Time Type       Size      RVA  Pointer
83
    -------- ------ -------- -------- --------
84
    56431792 cv          11C 0000418C     238C    Format: RSDS, {36688253-6563-4
85
7A7-856B-0CD6F31C2612}, 1, c:\projekte\...
86
87
SECTION HEADER #2
88
   .rsrc name
89
     5E8 virtual size
90
    6000 virtual address (00406000 to 004065E7)
91
     600 size of raw data
92
    2600 file pointer to raw data (00002600 to 00002BFF)
93
       0 file pointer to relocation table
94
       0 file pointer to line numbers
95
       0 number of relocations
96
       0 number of line numbers
97
40000040 flags
98
         Initialized Data
99
         Read Only
100
101
SECTION HEADER #3
102
  .reloc name
103
       C virtual size
104
    8000 virtual address (00408000 to 0040800B)
105
     200 size of raw data
106
    2C00 file pointer to raw data (00002C00 to 00002DFF)
107
       0 file pointer to relocation table
108
       0 file pointer to line numbers
109
       0 number of relocations
110
       0 number of line numbers
111
42000040 flags
112
         Initialized Data
113
         Discardable
114
         Read Only
115
116
  Summary
117
118
        2000 .reloc
119
        2000 .rsrc
120
        4000 .text

von Peter II (Gast)


Lesenswert?

funky schrieb:
> Auf dem x64 System kommt die Meldung, dass der Service nicht direkt
> gestartet werden kann, auf x32 das es keine zulässige x32 Anwendung ist

das sollte nicht der Fall sein, da stimmt etwas nicht. .net4.0 ist 
wirklich installiert?

Zwischen Anwendung und Service gibt es eigentlich keinen Unterschied. 
Service ist auch nur eine normale Anwendung, nur das sie sich nach dem 
Start beim ServiceManager anmeldet.

von funky (Gast)


Lesenswert?

hmpf, das wars.
Der Service war auf Net4.5 eingestellt, mein Testprogramm auf Net4(das 
war auch auf der x32 Maschine installiert)

Nachdem ich alles auf Net4 umgestellt habe, startet nun auch der 
Service.
Ich meine mich zu entsinnen, dass da sonst eine Meldung über ein 
fehlendes .NET Framework kam.

Danke für den Hinweis. Das es nun am falschen Framework liegen könnte, 
hab ich vollkommen übersehen

von Programmierer (Gast)


Lesenswert?

x32 ist ein ABI für AMD64. Du meinst also hoffentlich die Plattform x86 
und nicht das ABI x32...?

von funky (Gast)


Lesenswert?

ja, doch natürlich...genau das meinte ich eigentlich........

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Benutzt du manchmal ADO oder sowas ?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.