Frage

Ich habe eine Desktop-Anwendung unter Verwendung von VS 2008.

Wenn ich es lokal ausgeführt, die alle gut funktioniert.

Ich teilte meine Ausgabeordner (ohne dass Netzwerkbenutzer Dateien ändern) und lief meine exe von einem anderen Vista-Computer in unserem Intranet.

Wenn die gemeinsame exe ausgeführt wird, erhalte ich „System.UnauthorizedAccessException“, wenn eine Datei zu lesen versuchen.

Wie kann ich die Erlaubnis geben, damit die Datei zu lesen? Soll ich den Code ändern? Soll ich die Erlaubnis erteilen die Anwendung \ Ordner auf dem Computer Vista? wie?

Weitere Informationen:

  • Ich benutze nicht Clickonce. Die Anwendung sollte mit xcopy verteilt werden.

  • Meine Anwendung Zielframework ist“.NET Framework 2.0"

  • Auf dem Vista-Computer: "Controlpanel | UninstallOrChangePrograms" es sagt, es hat "Microsoft .Net Framework 3.5 SP1"

  • Ich habe auch versucht, das Ordner-Laufwerk abzubilden, bekam aber die gleichen Fehler, erst jetzt der Dateiname ist „T: \ my.ocx“

    ‘---------------------------------------------- ------------------------

    ‘mein ??Code:

    Dim src As String = mcGlobals.cmcFiles.mcGetFileNameOcx ()
    Dim Iostream A New System.IO.FileStream (src, IO.FileMode.Open)

    ‘---------------------------------------------- ------------------------

    öffentliche Geteilt Funktion mcGetFileNameOcx () As String

    ‘---------------------------------------------- ------------------------

      Dim dirName As String = Application.StartupPath & "\"
      Dim sFiles() As String = System.IO.Directory.GetFiles(dirName, "*.ocx")
    
      Dim i As Integer
      For i = 0 To UBound(sFiles)
        Debug.WriteLine(System.IO.Path.GetFullPath(sFiles(i)))
        ' if found any - return the first:
        Return System.IO.Path.GetFullPath(sFiles(i))
      Next
      Return "" 
    
    End Function
    

    ‘---------------------------------------------- ------------------------

    ‘Die Ausnahme, die ich erhalten:

    System.UnauthorizedAccessException: Access to the path '\\computerName\sharedFolderName\my.ocx' is denied.
      at System.IO._Error(Int32 errorCode, String maybeFullPath)
      at System.IO.FileStream.Init(...)
      at System.IO.FileStream..ctor(...)
      at System.IO.FileStream..ctor(String path, FileMode mode)
    

    ‘---------------------------------------------- ------------------------

War es hilfreich?

Lösung

habe es gefunden.

Laut MSDN, [Filestream-Konstruktor (String, Filemode)]

. . . Für Konstrukteure ohne Fileaccess Parameter,

  • , wenn der Modus-Parameter auf anhängen , Schreiben ist der Standardzugang.
  • Andernfalls wird der Zugriff auf Readwrite .
.

-> mein Code verwendet, um die standardmäßig mit ioStream.CanWrite: = True, und ich habe nicht Schreiben die Erlaubnis für den freigegebenen Ordner

so habe ich Fileaccess Parameter:

new code:
Dim ioStream As New System.IO.FileStream(srcOcx, IO.FileMode.Open, IO.FileAccess.Read) 

old code:
Dim ioStream As New System.IO.FileStream(srcOcx, IO.FileMode.Open) 

Andere Tipps

Beginnend mit .NET Framework 3.5 SP1 Sie erlaubt eine Anwendung von einer Netzwerkfreigabe ausgeführt werden. Sie tun es nicht Ziel haben, die Sie gerade haben müssen installiert sein.

Referenzen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top