AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Geplanter Task startet nicht

Ein Thema von mumu · begonnen am 23. Dez 2005 · letzter Beitrag vom 3. Feb 2011
Antwort Antwort
mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#1

Geplanter Task startet nicht

  Alt 23. Dez 2005, 15:56
wenn ich einen task mit delphi erstelle, dann lässt er sich nicht ausführen. dabei ist es egal, ob der startzeitpunkt für den task gekommen ist oder ob ich ihn manuell ausführen will. das gewünschte programm wird definitiv nicht gestartet. wenn ich jetzt die eigenschaften des tasks öffne und einen haken hin und wieder weg nehm (also so dass eigentlich keine einstellung geändert wurde) und dann auf ok klicke, dann funktioniert der task ohne probleme.

so erzeuge ich den task:

Delphi-Quellcode:
var
  HR : HRESULT;
  WorkItem : IUnknown;
  gCTask : TIID;
  gIScheduledWorkItem : TIID;
  ScheduledWorkItem : IScheduledWorkItem;
  pIPersistFile : IPersistFile;
  piNewTrigger : Word;
  ITTrigger : ITaskTrigger;
  TaskTrig : TTaskTRIGGER;
begin
  gCTask := CLSID_CTask;
  gIScheduledWorkItem := IID_IScheduledWorkItem;

  HR := SchedulingAgent.NewWorkItem(StrToWide(backup_name), gCTask,
    gIScheduledWorkItem, WorkItem);

  Task := ITask(WorkItem); //required for save
  ScheduledWorkItem := IScheduledWorkItem(WorkItem);
  if HR = S_OK then
  begin
    Task.SetApplicationName(StrToWide(Globals.CurrentDir + 'StartBackup.exe'));
    Task.SetWorkingDirectory(StrToWide(Globals.CurrentDir));
    Task.SetParameters(StrToWide('"Start_Job=' + GuidToString(_id)+'"'));
    Task.SetFlags(TASK_FLAG_RUN_ONLY_IF_LOGGED_ON);
  end;

  HR := Task.CreateTrigger(piNewTrigger, ITTrigger);
  if HR = S_OK then
  begin
    ZeroMemory(@TaskTrig, sizeof(TASK_TRIGGER));
    TaskTrig.cbTriggerSize := sizeof(TASK_TRIGGER);
    TaskTrig.Reserved1 := 0;
    TaskTrig.Reserved2 := 0;

    DecodeDateTime(_uhrzeit, Year, Month, Day, Hour, Min, Sec, mSec);
    TaskTrig.wStartHour := Hour;
    TaskTrig.wStartMinute := Min;

    DecodeDateTime(Now, Year, Month, Day, Hour, Min, Sec, mSec);
    TaskTrig.wBeginYear := Year;
    TaskTrig.wBeginMonth := Month;
    TaskTrig.wBeginDay := Day;
    TaskTrig.wEndYear := 0;
    TaskTrig.wEndMonth := 0;
    TaskTrig.wEndDay := 0;

    TaskTrig.MinutesDuration := 0;
    TaskTrig.MinutesInterval := 0;
    TaskTrig.rgFlags := 0;
    TaskTrig.wRandomMinutesInterval := 0;

    TaskTrig.TriggerType := TASK_TIME_TRIGGER_DAILY;

    TaskTrig.Type_.Daily.DaysInterval := _Tag;

    hr := ITTrigger.SetTrigger(@TaskTrig);
    if (hr <> S_OK) then
    begin
      MessageBox(0, pchar(MessageFromValue(hr)), 'Fehler', MB_ICONINFORMATION);
      exit;
    end;
  end;

  Task.QueryInterface(IID_IPersistFile, pIPersistFile);
  if pIPersistFile <> nil then
  begin
    pIPersistFile.Save(nil, true);
  end;
  Mit Zitat antworten Zitat
mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#2

Re: Geplanter Task startet nicht

  Alt 23. Dez 2005, 17:31
mir ist aufgefallen, dass der task nur funktioniert, wenn man den haken in der checkbox "Nur aktivieren, wenn angemeldet" entfernt und gleich danach wieder hinzufügt. oder wenn man vom pfad ein zeichen entfernt und gleich wieder hinmacht. Nach einem klick auf ok geht der task dann.

bei anderen checkboxen wird irgendwie der task nicht richtig durch windows aktualisiert und deshalb funktioniert der auch nach einem klick auf ok nicht.
  Mit Zitat antworten Zitat
mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#3

Re: Geplanter Task startet nicht

  Alt 27. Dez 2005, 11:21
hmm keiner ne idee? soll ich das programm vielleicht mal anhängen?
  Mit Zitat antworten Zitat
mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#4

Re: Geplanter Task startet nicht

  Alt 2. Jan 2006, 13:36
ich habs jetzt rausgefunden, voran es lag.

mein konto hatte kein kennwort, daher konnte der Geplante Task nicht ausgeführt werden:
siehe msdn

meiner meinung ist das ein witz, dass microsoft hier sagt, its not a bug, its a feature. wenn dem doch schon so ist, warum dann keine fehlermeldung???? so sucht man sich ja zu tode.

meine frage jetzt: kann ich den task auch irgendwie unter einem System Konto ausführen, so dass das Benutzerkonto kein Passwort braucht? welchen benutzernamen und welches password soll ich dann da angeben?
  Mit Zitat antworten Zitat
mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#5

Re: Geplanter Task startet nicht

  Alt 23. Jan 2006, 13:28
jemand ne idee?
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Geplanter Task startet nicht

  Alt 3. Feb 2011, 12:30
Mir klar, dass die Problemstellung schon lange her ist, aber da ich eben selbst lange vor dem Problem gehangen habe, für die Nachwelt:

Ohne Benutzername / Passwort wird der Task in Windows (Windows 7 Pro) zwar angelegt, aber weder Auslöser (Wochentag / Uhrzeit, ...) noch Aktion (Programm das gestartet wird) werden eingetragen.

Durch hinzufügen von
Task.AccountName := LocalSystemAccount;
oder Task.AccountName := 'SYSTEM';

vor z.B. die Zeile HR := Task.CreateTrigger(piNewTrigger, ITTrigger); klappt das erstellen (zumindest bei mir) einwandfrei, solange der Benutzer später zur Laufzeit als Administrator das Programm ausführt (stichwort Windows 7 Manifest, UAC und so weiter).

PS/Edit: Naja, das betrifft zumindest TJclScheduledTask . Ob das hier mit den Interfaces auch direkt zutrifft, weiß ich nicht. LocalSystemAccount ist übrigens eine String-Const mit dem Wert 'SYSTEM'. Laut M$ muss Benutzername und Passwort für den Task NIL oder '' sein, damit der SYSTEM - Account verwendet wird. TJclScheduledTask setzt die Werte entsprechend, wenn man "System" als Benutzernamen übergibt.
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#7

AW: Geplanter Task startet nicht

  Alt 3. Feb 2011, 12:58
Herzlichen dank

Wird sicher einigen Hilfreich sein.

MFG
Memnarch
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:23 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