Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Skorpi am 09.10.07 - 09:00:14

Titel: Mit FSO Ordner in einem Netzlaufwerk kopieren
Beitrag von: Skorpi am 09.10.07 - 09:00:14
Hallo Ihr da draußen!

Im Prinzip muss meine Anwendung einen Ordner von einem Netzlaufwerk in ein anderes Netzlaufwerk kopieren. Hierzu verwende ich die FileSystem Klasse von Johnson (siehehttp://atnotes.de/index.php?topic=27547.0 (http://atnotes.de/index.php?topic=27547.0)). Die Leserechte im Quellverzeichnis und die Schreibrechte im Zielverzeichnis sind vorhanden. Jedenfalls kann ich den Ordner per Hand kopieren.

In dem folgenden Code verwende ich den Laufwerksbuchstaben "Y" des Netzlaufwerks.

Code
Dim myFileSystem As New FileSystem
If Not myFileSystem.FolderExists("Y:\test") Then
	Call myFileSystem.CreateFolder("Y:\test")
End If			
Call myFileSystem.CopyFolder(notesinstallationPath, "Y:\test")

Fehler Nummer: 213 Fehler Nachricht: OLE: Automation object error

Ich habe auch schon versucht den Laufwerkbuchstaben durch den Server und die Freigabe ("\\server1\1234") zu ersetzen. Siehe Code.

Code
Dim myFileSystem As New FileSystem
If Not myFileSystem.FolderExists("\\server1\1234\test") Then
	Call myFileSystem.CreateFolder("\\server1\1234\test")
End If			
Call myFileSystem.CopyFolder(notesinstallationPath, "\\server1\1234\test")

Leider erhalte ich auch hier den selben Fehler.  :-:

Wenn ich allerdings das ganze mit dem lokalen Laufwerk "C" versuche, dann funktioniert es ohne Probleme. Der Ordner wird vom Netzlaufwerk in das lokale Laufwerk kopiert.

Code
Dim myFileSystem As New FileSystem
If Not myFileSystem.FolderExists("C:\test") Then
	Call myFileSystem.CreateFolder("C:\test")
End If			
Call myFileSystem.CopyFolder(notesinstallationPath, "c:\test")

Weiß jemand Rat? Schon mal vielen Dank im Voraus.
Titel: Re: Mit FSO Ordner in einem Netzlaufwerk kopieren
Beitrag von: umi am 09.10.07 - 09:17:38
Hallo Skorpi

In welchem Kontext läuft dein Agent? Server oder Lokal?
Server und Netzlaufwerke geben immer ein wenig Probleme.
Titel: Re: Mit FSO Ordner in einem Netzlaufwerk kopieren
Beitrag von: Skorpi am 09.10.07 - 09:30:46
Die Datenbank ist auf einem Server installiert. Den Agenten starte ich per Hand. Hmm, dann läuft der Agent im Kontext des Servers und es kann sein, dass dieser gar nicht die Rechte hat, um in das Zielverzeichnis zu schreiben.
Titel: Re: Mit FSO Ordner in einem Netzlaufwerk kopieren
Beitrag von: WernerMo am 09.10.07 - 09:34:58
hallo,

genau, dann musst Du dem Systemacount unter dem der Notesdienst läuft auch die Rechte in Netzwerk geben.

Gruß Werner
Titel: Re: Mit FSO Ordner in einem Netzlaufwerk kopieren
Beitrag von: umi am 09.10.07 - 09:37:08
Normalerweise läuft Domino unter Windows unter dem SystemAccount.
Dieser hat normalerweise keine Rechte auf Netzwerkshares zuzugreifen.
Jeder vernünftige Win Admin würde nie dem System Account die Netzwerkrechte geben.
=> Du müsstest den Account wechseln, unter welchem Domino läuft.

Titel: Re: Mit FSO Ordner in einem Netzlaufwerk kopieren
Beitrag von: Skorpi am 09.10.07 - 11:55:31
=> Du müsstest den Account wechseln, unter welchem Domino läuft.

Wie meinst du das genau? Kann ich den Kopier-Befehl im Hintergrund mit den Rechten eines anderen Accounts ausführen?
---------------------------------------------------------------------------------------
Also ich habe jetzt zwei andere Möglichkeiten gefunden mit denen das Kopieren klappt.

1. In einer gemeinsame Aktion funktioniert der Code.
2. Mit der Shell-Funktion, sowie der cmd.exe und dem Befehl xcopy.
Code
Dim result As Integer
result = Shell("CMD.EXE /c xcopy /e \\server2\ordner1\ordner2 y:\test\", 1)
Titel: Re: Mit FSO Ordner in einem Netzlaufwerk kopieren
Beitrag von: Skorpi am 09.10.07 - 12:46:16
Ich verstehe die Welt nicht mehr. Ich kann es mir zwar nicht erklären, aber plötzlich kopiert mein Agent den Ordner in das gewünchste Verzeichnis im Netzlaufzwerk. Ich habe nichts an den Rechten oder dem Code verändert.

Was solls, vielleicht hat es auch die Neukompilierung des Script's gebracht.

Hauptsache es funktioniert. Nochmals vielen Dank für eure Hilfe.  ;D