![]() |
Geplanter Task startet nicht
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; |
Re: Geplanter Task startet nicht
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. |
Re: Geplanter Task startet nicht
hmm keiner ne idee? soll ich das programm vielleicht mal anhängen?
|
Re: Geplanter Task startet nicht
ich habs jetzt rausgefunden, voran es lag.
mein konto hatte kein kennwort, daher konnte der Geplante Task nicht ausgeführt werden: siehe ![]() 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? |
Re: Geplanter Task startet nicht
jemand ne idee?
|
AW: Geplanter Task startet nicht
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. |
AW: Geplanter Task startet nicht
Herzlichen dank :)
Wird sicher einigen Hilfreich sein. MFG Memnarch |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz