C ++ Logon-Task-Zeitplan Fehler: Es wurde keine Zuordnung zwischen Kontonamen und Sicherheits-IDs vorgenommen

8

Ich versuche, eine Windows Logon-Trigger-Aufgabe mit C ++ unter Windows 7 zu schreiben.

Ich folge diesem Microsoft-Lernprogramm .

Aber ich habe ein Problem beim Speichern der Aufgabe im Stammordner. Hier:

%Vor%

Wo der hr Fehler erhält: Es wurde keine Zuordnung zwischen Kontonamen und Sicherheits-IDs vorgenommen

Ich habe auch versucht, _variant_t(L"Builtin\Administrators") durch _variant_t(L"S-1-5-32-544") zu ersetzen, um die Sprache schwer zu codieren, immer noch kein Glück.

Wie kann ich es zum Laufen bringen?

    
foobar 28.05.2014, 11:29
quelle

2 Antworten

3

Ich vermute, dass der Demo-Code XP-Ära ist und nicht aktualisiert wurde, um den Vista / Win7-Regeln zu entsprechen.

Ich habe das Beispiel aktualisiert, um die LUA-Einstellungen nach dem Festlegen des Anmelde-Triggers festzulegen, und es scheint zu funktionieren:

%Vor%

Wenn es unter XP ausgeführt werden muss, ist es wahrscheinlich, dass der get_Principal -Aufruf fehlschlägt, also lassen Sie diesen Fehler durch.

    
Eric Brown 16.06.2014, 17:00
quelle
3

Eine definitive Lösung für die Erstellung eines TaskScheduler-Tasks beim Windows-Start

(mit Administratorberechtigungen, funktioniert für Windows 7, 8 usw. Beachten Sie, dass dies beim Start von UAC kein UAC-Popup anzeigt "Sind Sie sicher, dass diese Software mit Administratorrechten ausgeführt wird?"), deshalb ist die TaskScheduler-Methode in diesem Fall interessanter als die gute alte HKEY_LOCAL_MACHINE \ ... \ CurrentVersion \ Run-Lösung)

Es gibt einige Dinge, die Sie in dieser Anleitung aktualisieren sollten damit es funktioniert:

  • _variant_t(L"S-1-5-32-544") anstelle von _variant_t(L"Builtin\Administrators")
  • _CRT_SECURE_NO_WARNINGS
  • In VC ++, Projekteigenschaften & gt; Konfigurationseigenschaften & gt; Linker & gt; Manifestdatei & gt; UAC-Ausführungsgrad & gt; requireAdministrator
  • Entfernen Sie die Datumsgrenzen, die jetzt veraltet sind!
  • Ersetzen Sie hr = pLogonTrigger->put_UserId(_bstr_t(L"DOMAIN\UserName")); entweder durch eine fest codierte Domäne \ Benutzername oder durch einige Domäne \ Benutzername Erkennungscode (Ich konnte es nicht funktionieren lassen), oder nur diese Zeile kommentieren , es hat für mich funktioniert!
  • Fügen Sie Code für TASK_RUNLEVEL_HIGHEST hinzu
  • Fügen Sie einen Code hinzu, um die Aufgabe zu aktivieren, selbst wenn Sie von einem Laptop mit Batterien starten (Standard wäre "Task nicht ausführen, wenn auf Batterien"!) und Code, um die .exe zu verhindern nach einiger Zeit getötet werden ( Standardmäßig wird eine Aufgabe ausgeführt 72 Stunden nach dem Start gestoppt werden ), usw.

Dann bekommst du das berühmte:

  

Erfolg! Aufgabe erfolgreich registriert.

Puh! Nach ein paar Stunden pro Tag und einigen Bearbeitungen ist nun ein funktionierendes volles main.cpp :

%Vor%     
Basj 21.07.2017 18:36
quelle