Benutzer mit den meisten Antworten
File.copy Zugriff verweigert

Frage
-
Hallo
IIS 7.5 ASP.NET 4, vb
ich möchte auf meinem lokalen System mit
System.IO.File.Copy(FileToCopy, NewCopy, True)
eine Datei in eine Netzwerkfreigabe auf einem anderen PC kopieren.
Über den WWD integrierten Server funktioniert das, wenn ich es allerdings über den localhost probiere, bekomme ich die Meldung, dass der Zugriff verweigert wurde.
Ich weiß jetzt allerdings nicht, welche Berechtigungen ich nun wo einfügen muss.
Nach etwas Suchen habe ich gelesen, dass ich den Benutzer ASPNET hinzufügen muss. Aber der existiert weder als Benutzer noch als Gruppe.
Ich bin für jeden Tipp dankbar.
Liebe Grüße, die Luzie!
- Bearbeitet Luzie Mittwoch, 22. August 2012 09:30
Antworten
-
Hallo Luzie,
Du kannst in den erweiterten Einstellungen des Application Pools angeben, mit welchem Benutzeraccount dieser ausgeführt wird.
IIS MMC
-> Anwendungspools
-> <Anwendungspool auswählen>
-> Erweiterte Einstellungen...
-> Abschnitt "Prozessmodell"
-> Eintrag "Identität"Dort wechselst Du dann auf "Benutzerdefiniertes Konto" und gibst die Daten des neuen Benutzeraccounts an.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Luzie Freitag, 31. August 2012 19:01
Alle Antworten
-
Hallo Luzie,
der integrierte ASP.NET Entwicklungswebserver ist eine normale Anwendung, die unter deinem Benutzeraccount läuft. IIS ist ein Dienst und läuft daher mit einem anderen Account, meist mit weniger Rechten. Dazu kommt, dass jeder Application Pool im IIS mit einem anderen Benutzeraccount ausgeführt werden kann.
Die Problematik ist, dass der Account, der für den entsprechenden Application Pool zuständig ist, mit identischen Angaben (Name, Passwort) auch auf dem Rechner eingerichtet werden muss, der die Freigabe enthält, wenn die Freigabe nicht für "Jeder" mit Schreibrechten versehen ist. Eine weitere Problematik ist dabei aber, dass "Jeder" nicht jeder ist. Der Account NETZWERKDIENST bzw. NETWORK SERVICE gehört bspw. nicht dazu.
Daher wäre es fürs testen das sinnvollste, den Application Pool mal kurzzeitig mit deinem Benutzeraccount laufen zu lassen. Einstellen kannst Du das über die IIS Management Konsole und dort im Node "Application Pools" bzw. "Anwendungspools".
Wenn das dann klappt, schauen wir weiter.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Mittwoch, 22. August 2012 09:40
-
Hallo Luzie,
Lies auch folgendes: Copy file from one folder to another folder
Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Daher wäre es fürs testen das sinnvollste, den Application Pool mal kurzzeitig mit deinem Benutzeraccount laufen zu lassen. Einstellen kannst Du das über die IIS Management Konsole und dort im Node "Application Pools" bzw. "Anwendungspools".
Hallo Stefan
Die Rechte sind bei allen Freigaben sind auf "jeder" gesetzt, der hat den Vollzugriff.
Der Anwendungspool ist der DefaultAppPool und die Identät LocalSystem.
Unter den erweiterten Einstellungen kann ich im Bereich:
Anmeldeinformationen für den physikalischen Pfad einen "bestimmten Benutzer" eingeben. Voreingestellt ist Anwendungsbenutzer (Pass-Trough-Authentifizierung)
Verstehe ich das jetzt richtig, muss ich unter bestimmten Benutzer meinen eigenen Benutzer, also den meines Laptops dort einfügen?Oder ich gebe den Benutzer meines Laptops an jedem PC ein und gebe ihm unter Freigabe den Vollzugriff?
Liebe Grüße, die Luzie!
-
Hallo Luzie,
Lies auch folgendes: Copy file from one folder to another folder
Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
also das Script funktioniert ja, nur habe ich halt das Berechtigungsproblem.Liebe Grüße, die Luzie!
-
Hallo Luzie,
"LocalSystem" hat, wie der Name schon sagt, nur Zugriff aufs lokale System und kann nicht ins Netzwerk. Netzwerkdienst geht auch nicht, da der Account Netzwerkdienst eben nicht "Jeder" ist. Daher würde ich vorschlagen, Du legst einen neuen Benutzeraccount auf dem Rechner an, auf dem der IIS liegt. Dem neuen Account ordnest Du der Benutzergruppe IIS_IUSRS zu und verwendest den Account als ausführenden Account für den Application Pool. (Du solltest dann aber ggfs. einen eigenen Application Pool für deine Anwendung anlegen)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan
Ich habe jetzt einen neuen Benutzer angelegt. Der Benutzer heißt z.B. xyz. Diesen Benutzer haben ich der Gruppe IIS_Users zugeordnet. Soweit habe ich es verstanden.
Aber was meinst Du damit "..und verwendest den Account als ausführenden Account für den Application Pool".?
Ich habe jetzt mal testweise einen neuen Application Pool mit dem gleichen Namen des Benutzers angelegt und der virtuellen Webanwendung zugewiesen. Was evtl. auch Quatsch ist. Ich kann es allerdings erst Montag im Netzwerk selbst testen.Liebe Grüße, die Luzie!
-
Hallo Luzie,
Du kannst in den erweiterten Einstellungen des Application Pools angeben, mit welchem Benutzeraccount dieser ausgeführt wird.
IIS MMC
-> Anwendungspools
-> <Anwendungspool auswählen>
-> Erweiterte Einstellungen...
-> Abschnitt "Prozessmodell"
-> Eintrag "Identität"Dort wechselst Du dann auf "Benutzerdefiniertes Konto" und gibst die Daten des neuen Benutzeraccounts an.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Luzie Freitag, 31. August 2012 19:01
-
Hallo Stefan,
Beim letzten PC schreibt er mir (nicht immer) einen Fehler: Netzwerkname nicht gefunden. Wobei die Fehler doch abgefangen werden sollte. Aber ob Fehlermeldung oder nicht, er findet den PC nicht.
Protected Function myPing(ByVal s As String) As Boolean Try Dim ping As Ping = New Ping() Dim pingreply As PingReply = ping.Send(s, 1000) If pingreply.Status = IPStatus.Success Then Return True Else Return False End If Catch Return False End Try End Function Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click Dim i As Int16 Dim result As String = "" Dim u = New String() {"pc01", "pc03", "pc02", "pc04"} Dim fileHilfe As String = "c:\hilfe\pts.chm" For i = LBound(u) To UBound(u) If myPing(u(i)) Then Select Case rdAuswahl.SelectedValue Case "0" cFile(fileHilfe, "\\" & u(i) & "\winptsG\pts.chm") result += "kopiert \\" & u(i) & "\winptsG\pts.chm<br/>" Case "1" result += "kopiert \\" & u(i) & "\winptsG\winptsPGM.accdb<br/>" Case "2" result += "kopiert \\" & u(i) & "\wdStartup\mod_Addin.dotm<br/>" Case Else result = "" End Select Else result += "nicht vorhanden " & u(i) & "<br/>" End If Next lblStatus.Text = result End Sub
Wenn ich es allerdings über eine Batch-Datei abfrage, wird das Netzwerk gefunden.
@echo off
ping /n 1 dummipc /w 130 > nul
if %errorlevel%==0 (
echo success
) else (
echo fail
)
ping /n 1 PC04 /w 130 > nul
if %errorlevel%==0 (
echo success
) else (
echo fail
)
PAUSE
Aber das Thema ist jetzt hier erledigt. Warum der PC spinnt, weiß der Teufel.
Danke für die Tipps.
Liebe Grüße, die Luzie!
- Bearbeitet Luzie Freitag, 31. August 2012 19:01