Forum: PC-Programmierung VS C# ->Release Windows 7 64Bit


von NixWissen (Gast)


Lesenswert?

Hallo die Herren und die Damen,

ich haube ein kleines Problem mit einem C# Release (Visual #Express 
2008, auf XP entwickelt).
Ich will dieses Release auf einem Windows7 64 bit Betriebssystem 
ausführen.
Dabei habe ich festgestellt, das wenn ich den kompletten Release-Ordner 
bei Windows 7 (64bit) in den Ordner "Programme (x86)"oder "Programme" 
schiebe, die .exe nicht ausführbar ist.
Wähle ich hingegen einen anderen Ordner, dann kann die .exe ausgeführt 
werden.

Kann mir dazu vielleicht jemand ein paar Hinweise geben warum dies so 
ist.

von Peter II (Gast)


Lesenswert?

NixWissen schrieb:
> Dabei habe ich festgestellt, das wenn ich den kompletten Release-Ordner
> bei Windows 7 (64bit) in den Ordner "Programme (x86)"oder "Programme"
> schiebe, die .exe nicht ausführbar ist.
gibt es auch eine Fehlermeldung? Kann es sein das du in den ordner daten 
schreiben willst? Wenn ja dann könnte das schon das Problem sein.

von NixWissen (Gast)


Lesenswert?

Ich habe da noch was gefunden:

http://msmvps.com/blogs/p3net/pages/configurations-and-platforms-in-visual-studio.aspx

Könnte sein das der Text unter der Überschrift "Platforms" genau mein 
Problem
anspricht, oder?

von NixWissen (Gast)


Lesenswert?

Es kommt eine Standard Fehlermeldung "Programm konnte nicht ausgeführt 
werden" oder "Programm funktioniert nicht mehr" irgendwas in diesem 
Sinne

von Peter II (Gast)


Lesenswert?

NixWissen schrieb:
> Es kommt eine Standard Fehlermeldung "Programm konnte nicht ausgeführt
> werden" oder "Programm funktioniert nicht mehr" irgendwas in diesem
> Sinne
dann kann es auch eine nicht aufgefangen exception sein - mach mal in 
der main ein try catch mit einer messagebox rein.

von NixWissen (Gast)


Lesenswert?

Try and Catch um die Main() das klingt gut werde ich probieren.

von NixWissen (Gast)


Lesenswert?

Ah ich weiss wie ichs rauskrieg ich lasse die Entwicklungsumgebung 
direkt den Debug-Ordner in z.B"Programme x86" erstellen und schau was 
passiert das müsste funktionieren,oder?

von Markus V. (valvestino)


Lesenswert?

NixWissen schrieb:
> wenn ich den kompletten Release-Ordner
> bei Windows 7 (64bit) in den Ordner "Programme (x86)"oder "Programme"
> schiebe, die .exe nicht ausführbar ist.

Für welch Plattform (x86 oder x64 oder AnyCPU) wurde den das Relaeas 
erstellt? Da es unter Programme(x86) nicht läuft, vermute ich mal, für 
x64?

Eine .NET-Anwendung muß nicht notwendigerweise unter allen 
Windows-Versionen lauffähig sein.

Gruß
Markus

von bluppdidupp (Gast)


Lesenswert?

Der Ordner hat bzgl. Ausführbarkeit überhaupt keine Auswirkung.
32bit Software läuft auch in "C:\Program Files\", 64bit-Software läuft 
auch in "C:\Program Files (x86)\"

Hau mal direkt in die program.cs direkt als erstes in der Main() nen 
MessageBox.Show("jo startet schonmal!"); und schau was passiert.

----
Übliche Probleme sind:
- Deine Anwendung ist fehlerhaft und schmiert irgendwo ab ("xyz 
funktioniert nicht mehr")
- Projekt steht auf AnyCPU, hat aber 32bit-only-Drittanbieterkomponenten 
eingebunden, Lösung: AnyCPU -> x86 umstellen
- Drittanbieterkomponenten fehlen auf dem Zielsystem oder wurden nicht 
richtig konfiguriert

von NixWissen (Gast)


Lesenswert?

SO ich habe alles als "Any CPU " erstellt. Das muss soweit richtig sein.

Ich lasse jetzt die Entwicklungsumgebung direkt den Debug Ordern im 
Verzeichnis "Programmme (x86)" erstellen. (Ausgabepfad-Debug)

Soweit so gut dann drücke ich auf F6(Projekt erstellen) dann kommen 
Fehlermeldungen.
"Die Datei C:User\XXX\Desktop\TranslationLib.dll kann nicht in Program 
Files (x86)\Debug\TranslationLib.dll kopiert werden. Der Zugriff auf den 
Pfad Program Files (x86)\Debug\TranslationLib.dll wurde verweigert"

Allso das klingt nach den Administrationsrechten oder was meint Ihr.

von NixWissen (Gast)


Lesenswert?

Jetzt kenne ich das Problem,

in dem Ordner "Programme (x86)" muss ich die .exe mit Rechtsklick "Als 
Amdministrator öffnen"

Windows 7 ist da anscheinend sehr empfindlich

von Peter II (Gast)


Lesenswert?

NixWissen schrieb:
> Jetzt kenne ich das Problem,
> in dem Ordner "Programme (x86)" muss ich die .exe mit Rechtsklick "Als
> Amdministrator öffnen"
> Windows 7 ist da anscheinend sehr empfindlich
nein kennst du nicht, du machst in deinen Programm einfach dinge die du 
als nutzer nicht machen darfst. z.b. Dateien im Programmverzeichniss 
speichern. Oder die Registry in einigen Bereichen nicht nur ReadOnly zu 
öffnen.

Du musst das Problem finden! Was ist wenn ein nutzer keine Admin-Rechte 
hat, dann kann er das Programm auch nicht als Admin ausführen.

von NixWissen (Gast)


Lesenswert?

@PeterII

Das von dir beschriebene Problem besteht noch.
Lösungen:
Entweder ich finde eine Möglichkeit im Code das Programm immer als Admin 
zu starten oder ich installier das Programm einfach in einen anderen 
Pfad und lasse im Installer kein Pfadänderungen zu.

Ander Registry spiele ich übrigens nicht rum.

von Peter II (Gast)


Lesenswert?

NixWissen schrieb:
> Entweder ich finde eine Möglichkeit im Code das Programm immer als Admin
> zu starten oder ich installier das Programm einfach in einen anderen
> Pfad und lasse im Installer kein Pfadänderungen zu.

Nochmal: Kann es sein das du in deinem Programmverzeichniss Dateien 
liest oder schreibst? Schreiben sollte man NIE in dem 
Programmverzeichnis, lesen ist ok mann muss aber darauf achten das die 
Dateien auch lesend und nicht lesend und schreibend geöffnet werden.

Lade dir mal den Processmonitor runter und übewache mal die 
Fileaktivität wenn du dein Programm als nicht admin startest - dann 
wirst du vermutlich ein access denied sehen.

von NixWissen (Gast)


Lesenswert?

Ja ich mach einen Schreibzugriff ich speichere bevor das Programm 
beendet wird die aktuellen Settings in eine Datei.

Aber das ist kein Problem wenn ich die .exe als Admin öffne dann geht 
das.

Aber so wie es aussieht werde ich einfach ein neues Verzeichnis auf C:\ 
anlegen.

von Peter II (Gast)


Lesenswert?

NixWissen schrieb:
> Ja ich mach einen Schreibzugriff ich speichere bevor das Programm
> beendet wird die aktuellen Settings in eine Datei.
>
> Aber das ist kein Problem wenn ich die .exe als Admin öffne dann geht
> das.
als admin darf man dort schreiben als nicht admin darf man es nicht.

Auf C:\ sollte man auch nicht schreiben.

MS hat für solche dinge den Ordner "%APPDATA%" für nicht Benutzer 
bezogene Dinge vorgeshen. Dort sollte man reinschreiben und nicht wo man 
denkt.

Dafür muss du die umgebungsvariable APPDATA abfragen bei XP zeigt sie 
auf  "C:\Dokumente und Einstellungen\kunze\Anwendungsdaten"

von NixWissen (Gast)


Lesenswert?

Also soll ich mein Programm komplett nach APPDATA installieren
oder nur die Datei die zur Laufzeit geändert werden soll.

Wie meinst du das mit dem Umgebungsvariable abfragen. Wo abfragen im 
Code
oder ?

von Peter II (Gast)


Lesenswert?

NixWissen schrieb:
> Also soll ich mein Programm komplett nach APPDATA installieren
> oder nur die Datei die zur Laufzeit geändert werden soll.

nein, nur die Anwendungsdaten deiner Answendungen sollen dort hin.

so wird es abgefragt:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

von C# (Gast)


Lesenswert?

Also generell gehört deine Anwendung in den Programme Ordner bzw Program 
Files Ordner.
Die Anwendungskonfiguration sollte eig immer nach %APPDATA% geschrieben 
werden. Dort hast du dann auch keine Probleme mit dem Lese und 
Schreibzugriff

von NixWissen (Gast)


Lesenswert?

Gut ich denke das ich hiermit genug Informationen habe und das
Problem mit sauberem Stil lösen kann.

Nochmals danke an alle die sich Zeit genommen haben.

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.