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.
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.
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?
Es kommt eine Standard Fehlermeldung "Programm konnte nicht ausgeführt werden" oder "Programm funktioniert nicht mehr" irgendwas in diesem Sinne
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.
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?
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
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
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.
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
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.
@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.
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.
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.
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"
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 ?
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)
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.