VS C# ->Release Windows 7 64Bit

Gast #2161681
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.
Gast #2161690
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.
Gast #2161712
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.
#2162017
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
Gast #2162035
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
Gast #2162115
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.
Gast #2162160
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.
Gast #2162193
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.
Gast #2162196
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.
Gast #2162204
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.
Gast #2162216
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"
Gast #2162272
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 ?
Gast #2162278
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)
Gast #2162281
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren