Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   Taskplaner und Netzlaufwerke (https://www.delphipraxis.net/133719-taskplaner-und-netzlaufwerke.html)

Errraddicator 7. Mai 2009 12:54


Taskplaner und Netzlaufwerke
 
Hiho!

Habe da ma ein Problem, was ich zwar jetzt erst ma umgangen habe, aber immer noch nich dessen Ursache verstehe.

...

Wir haben auf unserem Server eine Applikation via Taskplaner laufen.
Das hat bis diese Woche auch einwandfrei funktioniert, danach passiert gar nichts mehr.

Bzw. der Task wurde schon regulär gestartet, aber das Programm machte nichts mehr.
Nach ein paar Recherchen habe ich dann festgestellt, dass das Programm den Datenpfad nicht mehr finden konnte, welcher auf einem Netzlaufwerk (fiktiv X:\) liegt.

Das Programm läuft unter der Administratoren Kennung und hat folglich alle Rechte.
Auch der Administrator an sich hat das entsprechende Netzlaufwerk verbunden.

...

Starte ich das Programm als Administrator aus einer Windows-Sitzung auf diesem Server heraus, läuft alles einwandfrei.
Starte ich das Programm via Taskplaner, bekomme ich die Fehlermeldung "X:\FiktiveDaten\Datei.log konnte nicht erstellt werden, Pfad wurde nicht gefunden."

Im Moment habe ich es jetzt so gelöst, dass ich die Pfade als UNC-Pfad hinterlegt habe, also als "\\server\FiktiveDaten\Datei.log".
So funktioniert es wieder einwandfrei.

Aber hat vielleicht wer ne Ahnung, woran das liegen könnte, dass ein Netzlaufwerk in der normalen Sitzung verbunden wird/ist, aber im Taskplaner nicht?

Wir nutzen auf diesem Rechner Windows 2000.


Danke im voraus

cu Patrick

mkinzler 7. Mai 2009 13:00

Re: Taskplaner und Netzlaufwerke
 
Wird der Luafwerksbuchstabe per Loginskript verbunden? Für Dienste/tasks usw. würde ich immer UNC-Pfade verwenden

Errraddicator 7. Mai 2009 13:09

Re: Taskplaner und Netzlaufwerke
 
Zitat:

Zitat von mkinzler
Wird der Luafwerksbuchstabe per Loginskript verbunden? Für Dienste/tasks usw. würde ich immer UNC-Pfade verwenden

Also die Administratorkennung selbst hat ein Loginskript, wo das Laufwerk verbunden wird, japp.

Ich weiß jetzt allerdings ehrlich gesagt nich, ob der Taskplaner das Loginskript überhaupt ausführt oder nicht.
Vielleicht kann/muss man das ja erst konfigurieren?

...

Witzig fand ich ja nur, dasses wochenlang problemlos funktioniert hat und dann von einem Tag auf den Anderen nich mehr.
Komisch...

mkinzler 7. Mai 2009 13:12

Re: Taskplaner und Netzlaufwerke
 
Zitat:

Ich weiß jetzt allerdings ehrlich gesagt nich, ob der Taskplaner das Loginskript überhaupt ausführt oder nicht.
Nein, deshalb ist ja die Lösung mit UNC dafür besser

shmia 7. Mai 2009 13:13

Re: Taskplaner und Netzlaufwerke
 
Liste der Anhänge anzeigen (Anzahl: 1)
Manchmal sind Netzlaufwerke auch nicht verbunden.
Siehe Screenshot im Anhang.
Ich hätte hier eine Funktion, die das Laufwerk wieder verbindet.
Delphi-Quellcode:
function ReconnectDrive(const path:string):DWORD;
var
   libhandle : HMODULE;
   func : TWNetRestoreConnectionW;
   driveW : WideString;
begin
   Result := 0;
   driveW := ExtractFileDrive(path);
   if driveW='' then
      Exit;

   libhandle := LoadLibrary('mpr.dll');
   if libhandle=0 then
      Exit;
   try
      func := TWNetRestoreConnectionW(GetProcAddress(libhandle, 'WNetRestoreConnectionW'));
      if Assigned(func) then
         Result := func(0, @driveW[1]);
   finally
      FreeLibrary(libhandle);
   end;
end;
Bitte Rückinfo hier im Forum, ob das aus deinem Dienst heraus funktioniert.

Errraddicator 7. Mai 2009 13:18

Re: Taskplaner und Netzlaufwerke
 
Hiho!

Ne ne, also verbunden ist es schon, zumindest in der Windows-Sitzung selbst.

Ich mach das jetzt einfach so wie kinzler gesagt hat, bzw. ichs ja auch schon gemacht hab, über UNC.
Da brauch ich mir dann keinen Ast dafür abbrechen und groß was programmieren. :)

pertzschc 7. Mai 2009 13:25

Re: Taskplaner und Netzlaufwerke
 
Zitat:

Zitat von shmia
Ich hätte hier eine Funktion, die das Laufwerk wieder verbindet.
Delphi-Quellcode:
function ReconnectDrive(const path:string):DWORD;
var
   libhandle : HMODULE;
   func : TWNetRestoreConnectionW;
begin
...
end;

Wo/wie definierst Du denn "TWNetRestoreConnectionW"?

Danke+Gruß,
Christoph

shmia 7. Mai 2009 13:26

Re: Taskplaner und Netzlaufwerke
 
Zitat:

Zitat von Errraddicator
Ne ne, also verbunden ist es schon, zumindest in der Windows-Sitzung selbst.

Aber der Dienst ist ja eine neue Sitzung unter eigenen Konto und dann sind wahrscheinlich alle Netzlaufwerk erstmal nicht verbunden.
Du brauchst dir auch keinen Ast abbrechen, sondern nur Copy und Paste und bevor du auf die Datei zugreifst die Funktion
ReconnectDrive() aufrufen.
Mich würde das wirklich interessieren ob das funktioniert.
Zumal ich ja hier schon Zeit beim Heraussuchen der Funktion investiert habe...

Errraddicator 7. Mai 2009 13:31

Re: Taskplaner und Netzlaufwerke
 
Zitat:

Zitat von shmia
...Mich würde das wirklich interessieren ob das funktioniert.
Zumal ich ja hier schon Zeit beim Heraussuchen der Funktion investiert habe...

Nimms nir nich übel, aber ich fummel doch jetzt nich an unserem produktiven Systemservern mit mir fremden Code rum, nur um was zu testen, was eigentlich überflüssig is. ;)

Zumal es mir ja auch gar nich um eine Delphilösung des Problems ging.
Da hätt ich ja auch ganz doof via ShellExecute "net use" machen können und hätte das Thema auch vom Tisch gehabt. :D

...

Ich wollte ja eigentlich nur wissen, woran es wohl liegen kann, dass die Netzlaufwerke wochenlang 1A verbunden sind und dann schlagartig nicht mehr, bzw. ob jemand schon mal ein ähnliches Problem hatte.

War so gesehen also nur ein Neugiersfred, denn eine Lösung für das Problem hatte ich ja schon bevor ich den Fred hier aufgemacht habe. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz