2012-04-07 11 views
2

Ich versuche, die Tasks von meiner Anwendung mit schtasks zu planen, anstatt die Windows Taskplaner COM/Managed API zu verwenden.
eine Aufgabe hier zu erstellen ist einfacher, indem diese Zeile auf Befehl schtasks /Create /tn "MyApp" /tr c:\myapp.exe /sc onlogon aber ich die Kommandozeile als Administrator geöffnet die Aufgabe erstellt werden (sonst ich den Zugriff verweigert werden)Planen von Aufgaben mit 'schtasks' ohne Administratorrechte C#

Aus meiner Anwendung, die Aufgabe, die ich verwende, um zu erstellen

string args = @"/Create /tn MyApp /tr c:\myapp.exe /sc onlogon"; 
Process.Start("schtasks", args); 

Allerdings wird die Aufgabe nur dann erstellt, wenn ich meine Anwendung als Administrator ausführen. Ich muss dies vermeiden, damit jeder Benutzer die Aufgabe erstellen kann, ohne die App als Administrator ausführen zu müssen. Irgendwelche Vorschläge, wie das gemacht werden könnte?

+0

Was genau sind Sie bis zu? Meinst du, dass die Aufgabe erstellt wird oder die Aufgabe ausgeführt wird, wenn Sie als Administrator ausgeführt werden? –

+0

@Chibueze Opata: Nein, die Aufgabe wird nicht einmal erstellt. – user1240679

+0

Ja, aber warum möchten Sie Administratorrechte vermeiden? Es sieht verdächtig .. die Abhilfe ist ziemlich weit hergeholt .. und nicht ratsam –

Antwort

2

Sie können mit einer Art von RunAs versuchen, die einen Prozess mit einem bestimmten Benutzer ausgeführt werden lassen:

ProcessStartInfo psi = new ProcessStartInfo("schtasks"); 
    psi.UseShellExecute = false; 
    psi.UserName = "Username"; 
    psi.Password = "password"; 

    Process.Start(psi); 

Die Process-Klasse durch Process einen Mechanismus bereitstellt, die Sie den Benutzerkontext angeben kann, dass der neue Prozess sollte unter ausgeführt werden, sodass Sie den Benutzer angeben können, in dem Sie den Befehl ausführen möchten, selbst wenn der Benutzer, der das Programm startet, anders ist. In Ihrem Fall können Sie Administrator-Anmeldeinformationen an die Process angeben, ohne das Programm mit einem Administrator-Benutzer auszuführen ...

+0

Also, wenn ich meine Anwendung verteile, was ist der Benutzername und das Passwort in diesem Fall?; -/Eingaben vom Benutzer zu nehmen wäre sehr seltsam, da in einer völlig unabhängigen Anwendung ein Benutzer möglicherweise nicht einmal die Anmeldeinformationen angibt. – user1240679

+0

Sie können den Benutzer zum Beispiel konfigurieren lassen ... – aleroot

+0

Was würde auf PCs passieren, wo der Benutzer sein Passwort nicht konfiguriert hat? – user1240679

0

Warum sollte das Benutzer Unterbrechung jedes Mal in einer Ausstellung Stand PC erfordern, die nur für Ausstellung montiert ist Zweck?

Wenn Sie ein verstecktes Programm mögen, die auf einem PC laufen werden, wenn es gestartet wird, und Ihre Aufgabe ist nicht schädlich, können Sie es zu dem folgenden Registrierungsschlüssel hinzu:

HKCU \ Software \ Windows \ CurrentVersion \ Ausführen

programmgesteuert. Ich kann Code bei Bedarf bereitstellen.

+0

Ich habe diesen Ansatz bereits versucht, aber das löst nicht den Zweck, die Anwendung automatisch um 6 Uhr morgens zu starten, was mit dem Taskplaner erledigt werden kann. : -/ – user1240679

+0

Tut mir leid, ich habe nur Probleme, Dinge so zu sehen, wie du es siehst. Ihre Erklärungen scheinen immer umhüllt ... Vielleicht könnte http://taskscheduler.codeplex.com/ Ihnen helfen. Viel Glück –

0

Inhalt der TextBox: "SchTasks.exe/Create/ST 06.30/SC DAILY/TN Bericht/TR notepad.exe"

konnte ich Process.Start (Process) verwenden;

ProcessStartInfo psinfo = new ProcessStartInfo(); 

psinfo.Filename = "powershell.exe"; 
psinfo.Args = textbox1.text; 

Process.Start(psinfo); 

** Natürlich wird dies nur auf Maschinen arbeiten, die Powershell installiert haben, mit cmd.exe die geplante Aufgabe erstellen gescheitert ...

Verwandte Themen