Announcement

Collapse
No announcement yet.

Fehler bei der Anforderung des Berechtigungstyps

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehler bei der Anforderung des Berechtigungstyps

    Hallo,

    ich möchte gleich vorweg nehmen das ich sogut wie keinerlei Programmierkenntnisse habe und deswegen darum bitte, dass ihr euch sofern ihr mir helfen könnt so ausdrückt das ein Kleinkind es verstehen könnte.

    Mein Kollege und ich haben in Visual Studio 2005 mit VB ein Programm erstellt welches unter anderem Strings in 3 unter dem Netzlaufwerk I:\Aktenplan liegenden Dateien speichert und daraus ließt. Nun haben wir das Programm soweit, dass alles funktioniert ausser dem Speicher in diese Files.
    Es erscheint beim Versuch die Fehlermeldung:

    Fehler bei der Anforderung des Berechtigungstyps
    System.Security.Permissions.FileIOPermission, mscorlib,
    Version = 2.0.0.0, Culture = neutral,
    PublicKeyToken=b77a5c561934e089

    Ich habe die Möglichkeit Weiter oder Beenden zu klicken, bei beidem wird letzten Endes logischerweise nichts gespeichert.

    Das Programm soll, sofern es irgendwann fertig ist, auf Terminalservern laufen.
    Lokal funktioniert das speichern, auf dem TS jedoch nicht. Wir haben auf den Server das .NET Framework 1.1 inkl. SDK installiert und nutzen Windows Server 2003. Ich hoffe das sind alle Angaben die gebraucht werden um Hilfestellung leisten zu können.

    Vielen Dank im voraus

  • #2
    Ich bin mir nicht sicher, aber probier es mal!

    Öffne dein Projekt im Visual Studio 2005,
    klicke rechts im Projektmappen explorer auf den Projektnamen, und dann auf "Eigenschaften" --> Bild -->



    Dann klick auf den Reiter "Sicherheit" und dann setz den Hacken auf
    "ClickOnce Sicherheitseinstellungen aktivieren" und mach "voll vertrauenswürdige Anwendung". --> Bild -->



    Du kannst natürlich auch den unteren PUnkt nehmen "Teilweise vertrauenswürdig" aber dann musst du dich mit den Eigenschaften auskennen.

    Schreib doch mal obs funktioniert hat bzw. nicht funkioniert hat ;-)

    Gruß

    P.S. wie du siehst gibt es auch eine Berechtigungseinstellung für dein Problem mit "FileIOPermission"

    Comment


    • #3
      @jesus : Das gilt nur wenn man seine Anwendung auch mit ClickOnce deployed. Ich glaube kaum das kschenten das tut, hätte er erwähnt.

      @kschenten : Warum installierst du das 1.1 Framework für eine 2.0 Anwendung?


      Wenn ich dich richtig verstanden habe bekommst du die Meldung erst beim schreiben der Daten auf eine nicht lokale Platte richtig? Das sollte ein ganz normales Rechteproblem sein. Hast du die Rechte des Users unter dem die Anwendung läuft auf deinen Zielordner untersucht?

      Comment


      • #4
        Hallo und danke für die flotte Rückmeldung.

        @ jesus.online: diese Einstellung war standardmäßig schon drin.

        @ Ralf Jansen: Ich bin leider nicht der Systemadmin, aber ich konnte ihn dazu bewegen das SDK 2 zu installieren, wenn wir das getan haben probieren wir das Programm nochmal und ich melde mich wieder.

        Dennoch schonmal vielen Dank an euch 2.

        Comment


        • #5
          Also, wir haben SDK 2.0 installiert und die Sicherheitsrichtlinien für das Lokale Intranet auf FullTrust gestellt und das Programm funktioniert. Einziges Problem, man erlaubt uns nicht die Sicherheitsrichtlinien für das komplette lokale Intranet so hoch zu schrauben. Gibt es eine Möglichkeit nur die Berechtigung für meine Anwendung auf FullTrust zu stelle und wie/wo geht das?

          Eins noch, was genau ist eigentlich ein Assembly?

          Comment


          • #6
            Zur Frage was sind Assemblies :
            Assemblies sind PE-Files(dll's oder exe's die übersetzten Managed Code(CLI) enthalten.


            Full Thrust hilft? Dann habe ich dein Problem nicht ganz verstanden. Ich dachte du kannst aus der Anwendung heraus nicht auf in ein bestimmtes Netzlaufwerk schreiben. Das sollte normal durch Userrechte des programmausführenden Users auf dieses Verzeichnis gelöst werden.

            Oder startest du das Programm nicht von einem lokalen Datenträger und du bekommst den Fehler schon beim starten der Anwendung. Dann ist das ein Thrust Problem. Das SDK habt ihr dann auch nur installiert um an das Caspol Tool heranzukommen um den Thrust Level einzustellen, richtig? In dem Fall schmeist das SDK wieder runter und installiert das aktuellste Framework. Das sollte 3.5 SP1 sein. Darüber läuft dann auch die 2.0'er Anwendung und im letzten Service Pack sind dann auch die Regeln zum starten aus einem Network Share gelockert worden so das Full Thrust eigentlich nicht mehr nötig ist.

            Comment


            • #7
              Hey, danke für die Antwort.

              Der fehler kommt hoch sobald wir in der Anwendung eins der beiden Unterprogramme starten die in eine der Dateien schreiben die sich im gleichen Verzeichnis befinden wie die Anwendung, nämlich i:\Aktenplan. I: ist bei uns das Netzlaufwerk das quasi den Eigene Dateien Ordner von Windows ersetzen soll, sprich jeder unserer rund 1600 Anwender hat sein eigenes I: Netzlaufwerk und dort den Ordner Aktenplan wo die besagten Dateien und die Anwendung liegen.

              Das Starten der Anwendung ist kein Problem, genauso wie das Lesen aus einem der Files. Erst wenn Das Programm versucht einen Datensatz in die Datei zu schreiben macht er dicht, sonst funktioniert alles 100%.
              Was die Rechte der User in dem Vereichnis angeht, Sie haben entsprechend der Situation das es ihr "privates Netzlaufwerk" ist Vollzugriff auf alles was sich dort befindet. Weder die Dateien, noch das Verzeichnis sind Schreibgeschützt oder ähnliches.

              Hier noch der Detail-Text aus der Fehlermeldung:

              Informationen über das Aufrufen von JIT-Debuggen
              anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

              ************** Ausnahmetext **************
              System.Security.SecurityException: Fehler bei der Anforderung des Berechtigungstyps System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
              bei System.Security.CodeAccessSecurityEngine.Check(Obj ect demand, StackCrawlMark& stackMark, Boolean isPermSet)
              bei System.Security.CodeAccessPermission.Demand()
              bei System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
              bei System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
              bei System.IO.StreamWriter.CreateFile(String path, Boolean append)
              bei System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
              bei System.IO.StreamWriter..ctor(String path)
              bei intelligenter_Aktenplan.Form1.ListBox_Save(ListBox ListBox, String sFile)
              bei intelligenter_Aktenplan.Form1.ishare_Click(Object sender, EventArgs e)
              bei System.Windows.Forms.Control.OnClick(EventArgs e)
              bei System.Windows.Forms.Button.OnClick(EventArgs e)
              bei System.Windows.Forms.Button.OnMouseUp(MouseEventAr gs mevent)
              bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
              bei System.Windows.Forms.Control.WndProc(Message& m)
              bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
              bei System.Windows.Forms.Button.WndProc(Message& m)
              bei System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
              bei System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
              bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
              Die Aktion, bei der ein Fehler aufgetreten ist:
              Demand
              Der Typ der ersten Berechtigung, bei der ein Fehler aufgetreten ist:
              System.Security.Permissions.FileIOPermission
              Die Zone der Assembly, bei der ein Fehler aufgetreten ist:
              Intranet


              ************** Geladene Assemblys **************
              mscorlib
              Assembly-Version: 2.0.0.0.
              Win32-Version: 2.0.50727.42 (RTM.050727-4200).
              CodeBase: file:///S:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
              ----------------------------------------
              intelligenter Aktenplan
              Assembly-Version: 1.1.0.0.
              Win32-Version: 1.1.0.0.
              CodeBase: file:///I:/Aktenplan/intelligenter%20Aktenplan.exe.
              ----------------------------------------
              System.Windows.Forms
              Assembly-Version: 2.0.0.0.
              Win32-Version: 2.0.50727.42 (RTM.050727-4200).
              CodeBase: file:///S:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
              ----------------------------------------
              System
              Assembly-Version: 2.0.0.0.
              Win32-Version: 2.0.50727.42 (RTM.050727-4200).
              CodeBase: file:///S:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll.
              ----------------------------------------
              System.Drawing
              Assembly-Version: 2.0.0.0.
              Win32-Version: 2.0.50727.42 (RTM.050727-4200).
              CodeBase: file:///S:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
              ----------------------------------------
              Microsoft.VisualBasic
              Assembly-Version: 8.0.0.0.
              Win32-Version: 8.0.50727.42 (RTM.050727-4200).
              CodeBase: file:///S:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll.
              ----------------------------------------
              System.Configuration
              Assembly-Version: 2.0.0.0.
              Win32-Version: 2.0.50727.42 (RTM.050727-4200).
              CodeBase: file:///S:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.
              ----------------------------------------
              System.Xml
              Assembly-Version: 2.0.0.0.
              Win32-Version: 2.0.50727.42 (RTM.050727-4200).
              CodeBase: file:///S:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll.
              ----------------------------------------
              mscorlib.resources
              Assembly-Version: 2.0.0.0.
              Win32-Version: 2.0.50727.42 (RTM.050727-4200).
              CodeBase: file:///S:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
              ----------------------------------------
              System.Windows.Forms.resources
              Assembly-Version: 2.0.0.0.
              Win32-Version: 2.0.50727.42 (RTM.050727-4200).
              CodeBase: file:///S:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
              ----------------------------------------

              ************** JIT-Debuggen **************
              Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
              Konfigurationsdatei der Anwendung oder des Computers
              (machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
              Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

              Zum Beispiel:

              <configuration>
              <system.windows.forms jitDebugging="true" />
              </configuration>

              Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
              Ausnahmen an den JIT-Debugger gesendet, der auf dem
              Computer registriert ist, und nicht in diesem Dialogfeld behandelt.

              Ich hoffe mit den Infos könnt ihr was anfangen.

              Schonmal danke im voraus!
              Zuletzt editiert von kschenten; 29.08.2008, 08:09.

              Comment


              • #8
                Zu Simpel -.-

                Wir musste folgendes tun:

                1.

                In den Quellcode folgende Zeilen einfügen

                Imports System
                Imports System.IO
                Imports System.IO.FileAccess
                Imports System.IO.FileShare
                Imports System.Security.Permissions.FileIOPermission

                Ob wirklich alle 5 Zeilen nötig sind kann ich heute leider nicht mehr bestätigen weil ich nicht die nötigen Rechte auf unserem System habe um es zu testen.

                2.

                Im SDK 2.0 der Anwendung volles Vertrauen (also FullTrust) geben.

                Laufzeitrichtlinien --> Vertrauensstellung einer Assembly erhöhen

                Den zweiten Punkt konnte man leider nicht vollständig ausführen bevor der Erste nicht gemacht wurde.

                Naja jedenfalls sind jetzt alle Beteiligten zufrieden.

                Ich möchte euch nochmals für eure Hilfe danken, vor allem dir jesus.online für deine mühe mit den Screenshots.

                Wenn es jemand interessiert poste ich am Montag nochmal ob alle Schritte aus Punkt eins wirklich nötig sind.

                mfg

                Comment

                Working...
                X