2012-04-07 101 views
2

我想從我的應用程序使用schtasks而不是使用Windows任務計劃程序COM /託管API計劃任務。
這裏創建一個任務是通過使用此命令行schtasks /Create /tn "MyApp" /tr c:\myapp.exe /sc onlogon容易,但我打開命令行來獲得任務創建的(否則我得到拒絕訪問)使用'schtasks'沒有管理員權限的計劃任務C#

從我的應用程序,創建我使用任務管理員

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

但是,如果我跑我的應用程序作爲管理員的任務只得到創建。我需要避免這種情況,以便任何用戶都可以創建任務,而無需以管理員身份運行應用程序。有關如何完成此任務的任何建議?

+0

到底是你到什麼?你的意思是當你以管理員身份運行時,任務被創建或任務運行? – 2012-04-07 15:10:10

+0

@Chibueze Opata:不,任務甚至不會創建。 – user1240679 2012-04-07 15:46:17

+0

是的,但您爲什麼要避免管理員權限?它看起來可疑..解決方法是相當牽強..不建議 – 2012-04-07 15:51:07

回答

2

你可以用一種運行方式的,允許使用指定的用戶運行一個進程嘗試:

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

    Process.Start(psi); 

通過的ProcessStartInfo Process類提供了一種機制,它允許你指定的用戶背景下,新工藝應該運行,因此即使啓動程序的用戶不同,您也可以指定要運行該命令的用戶。你的情況,你可以指定管理員憑據的ProcessStartInfo無需向管理員用戶運行該程序...

+0

因此,當我分發我的應用程序時,這種情況下的用戶名和密碼是什麼?; - 從用戶那裏獲得輸入將會非常奇怪,因爲在完全不相關的應用程序中,用戶可能甚至不會提供憑證。 – user1240679 2012-04-07 15:44:26

+0

你可以讓用戶配置它,例如... – aleroot 2012-04-07 15:48:36

+0

用戶沒有配置他/她的密碼的PC上會發生什麼? – user1240679 2012-04-07 16:04:00

0

爲什麼需要用戶中斷它安裝只是在博覽會展出攤位 PC每次目的?

如果你想隱藏的程序,將每當它啓動時,你的任務是不是有害的在PC上運行,你可以將它添加到下面的註冊表項:

HKCU \軟件\ Windows \ CurrentVersion \ Run

以編程方式。如果需要,我可以提供代碼。

+0

我已經嘗試了這種方法,但這並不能解決在早上6點自動啓動應用程序的目的,這可以通過Task Scheduler來完成。 : -/ – user1240679 2012-04-07 16:20:10

+0

對不起,我只是看到事情的方式,你看到它的問題。你的解釋總是顯得很籠統......也許http://taskscheduler.codeplex.com/可以幫助你。祝你好運 – 2012-04-07 16:26:35

0

內容文本框: 「SCHTASKS.EXE /創建/ ST 6時半/ SC每日/ TN報告/ TR的notepad.exe」

我能夠使用的Process.Start(的ProcessStartInfo);

ProcessStartInfo psinfo = new ProcessStartInfo(); 

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

Process.Start(psinfo); 

**當然,這隻會在已安裝PowerShell的計算機上工作,使用CMD.EXE無法創建計劃任務...