2017-11-23 6 views
0

Mein Problem:mein Programm im administrativen Modus automatisch starten, wenn das System ohne UAC Prompt startet

ich ein Programm gemacht, und ich habe dieses Programm zum Beispiel jetzt in dieses Verzeichnis: "C:\Program Files (x86)\AppName", jetzt im Programm Ich speichere einige Bilder in meinem Programmverzeichnis, aber da dies in der C Festplatte ist, gibt es mir eine access denied Fehler, jetzt habe ich das Programm immer im Verwaltungsmodus ausgeführt und das hat gut funktioniert, aber es gibt auch in meinem Programmieren Sie eine Funktion, um mein Programm automatisch zu starten, wenn das System mit einem Registrierungsschlüssel startet, aber wenn "immer im Verwaltungsmodus ausgeführt wird" ist ON, wird das Programm nicht starten, obwohl ein Startschlüssel in der Registrierung vorhanden ist, und wenn "immer im Verwaltungsmodus ausgeführt wird" ist OFF, wird es gestartet.


Was ich versucht habe bisher:

Ich habe versucht, eine andere ausführbare Datei machen, die beginnt, wenn das System startet und dann wird es mein Hauptprogramm laufen und es sich von selbst schließen und ich wusste, das wird funktionieren, aber jetzt jedes Mal, wenn ich meinen Computer starte, frage ich in der User Access Control-Eingabeaufforderung, ob ich diesem Programm überhaupt traue und das nicht sehr benutzerfreundlich ist.

So suchte ich und ich fand, dass ich geplante Aufgabe erstellen kann, aber ich fand nicht viele Beispiele und aber ich versuchte, man manuell zu schaffen, und es hat funktioniert, wie gewünscht!

Aber hier ist ein Code, der nicht funktioniert hat:

Imports Microsoft.Win32.TaskScheduler 

Using ts As New TaskService("\\RemoteServer") 
    'Create a new task definition and assign properties 
    Dim td As TaskDefinition = ts.NewTask() 
    td.RegistrationInfo.Description = "Does something" 

    'Create a trigger that will fire the task at this time every other day 
    td.Triggers.Add(New DailyTrigger() With { 
     Key.DaysInterval = 2 
    }) 

    'Create an action that will launch Notepad whenever the trigger fires 
    td.Actions.Add(New ExecAction("notepad.exe", "c:\test.log", Nothing)) 

    'Register the task in the root folder 
    ts.RootFolder.RegisterTaskDefinition("Test", td) 
End Using 

Und das Problem mit dem Code ist:

Es couldn‘ t finden Sie die TaskService und es hat uns nicht e der TaskScheduler Bibliothek!


Hoffnung jemand etwas Erfahrung damit haben, die mir helfen können!

+2

Ich denke, das Problem ist, 'ich einige Bilder in meinem Programm directory' bin sparen. Program Files ist nicht für Daten und erfordert spezielle Erlaubnis. Der Rest scheint versucht zu hacken um das – Plutonix

Antwort

1

Um Ihre Frage zu beantworten:

diesen Code nutzen zu können, haben die Managed Task Scheduler Wrapper zuerst zum Download bereit. Dann, um es mit Administratorrechten laufen zu lassen Sie haben die RunLevel zu TaskRunLevel.Highest auf TaskDefinition setzen:

td.Principal.RunLevel = TaskRunLevel.Highest 

jedoch wie Plutonix says sollten Sie keine Dateien in das Verzeichnis schreiben von Ihr Programm (normalerweise im beschränkten Ordner %ProgramFiles%).

Verwenden Sie stattdessen die %ProgramData% directory.Sie können den Pfad, um es aus dem Code über Environment.GetFolderPath() erhalten:

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) 

'Example: 
Dim ConfigPath As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "AppName") 
Dim ImagePath As String = Path.Combine(ConfigPath, "MyImage.png") 

If Directory.Exists(ConfigPath) = False Then Directory.CreateDirectory(ConfigPath) 
+0

Ich denke, das macht Sinn und ich werde damit gehen, danke! –

+0

@MousaAlphaily: Schön, dass wir helfen konnten! –

Verwandte Themen