2012-01-02 17 views
7

मैं Google अद्यतनकर्ता की तरह डेल्फी 7 का उपयोग करके कार्य कैसे निर्धारित कर सकता हूं?
मैं रजिस्ट्री का उपयोग नहीं कर रहा हूं क्योंकि इसे कास्पर्सकी एंटीवायरस द्वारा झूठा अलार्म के रूप में पता चला है।
कुछ भी मैं रजिस्ट्री में जोड़ने के रूप में एक स्टार्ट-अप आइटम एक ट्रोजन के रूप में पता हो जाता है तो मैं काम अनुसूची का उपयोग करने का फैसला कियाप्रोग्रामेटिक रूप से किसी कार्य को शेड्यूल करने के लिए कैसे करें

+3

[कार्य शेड्यूलर] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa383614 (v = vs.85) .aspx) API का उपयोग करें। एमएसडीएन दस्तावेज जिसमें मैं लिंक करता हूं, में कई उदाहरण हैं। –

+1

किसी को आश्चर्य करना होगा कि आपको ट्रोजन के रूप में क्यों फ़्लैग किया जा रहा है। शायद एक असली मुद्दा है। –

+0

अच्छी तरह से प्रोग्राम अपने सभी बहुत ही सरल अनुप्रयोगों पर हानिकारक नहीं है लेकिन कोड में कहीं भी रजिस्ट्री सेट करने के लिए ** RegSetValueEx सॉफ़्टवेयर \ Microsoft \ Windows \ CurrentVersion \ Run ** का उपयोग करते हुए कास्पर-स्काई का पता लगाने के रूप में एप्लिकेशन को ट्रोजन के रूप में पहचानें। कार्य शेड्यूलर एपीआई क्या आपके पास डेल्फी के लिए कोई चल रहा उदाहरण है? – user1023395

उत्तर

6

कोड का निम्न भाग हटा सकते हैं और कार्य जो सिस्टम पर अनुप्रयोग चलेगा बनाने का तरीका पता चलता सिस्टम विशेषाधिकारों के साथ स्टार्टअप। यह निम्न कमांड लाइन का उपयोग करता है:

हालांकि विंडोज विस्टा के बाद टास्क शेड्यूलर कार्यों के बल निर्माण का समर्थन करता है, मैं इसे विंडोज एक्सपी के साथ पिछड़े संगतता के लिए उपयोग नहीं करता, जहां यह ध्वज मौजूद नहीं है। तो नीचे दिया गया उदाहरण कार्य को हटाने की कोशिश करता है (यदि पहले से मौजूद है) और फिर नया बनाएं।

यह इन आदेशों को निष्पादित करता है:

schtasks// f/tn "myjob" हटाएँ
schtasks/बनाएँ/tn "myjob"/tr "C: \ Application.exe"/अनुसूचित जाति onStart/आरयू "सिस्टम"

/हटाने - कार्य को हटाने
/च - पुष्टि दबाने
/बना सकते हैं - बनाने के कार्य पैरामीटर
/TN - कार्य की अद्वितीय नाम
/tr - एक निष्पादन योग्य फ़ाइल का फ़ाइल नाम
/अनुसूचित जाति - अनुसूची प्रकार, onStart - प्रारंभ होने पर चलाएं
/आरयू - निर्दिष्ट उपयोगकर्ता

और यहाँ की अनुमतियों के तहत कार्य चलाने के कोड है:

uses 
    ShellAPI; 

procedure ScheduleRunAtStartup(const ATaskName: string; const AFileName: string; 
    const AUserAccount: string); 
begin 
    ShellExecute(0, nil, 'schtasks', PChar('/delete /f /tn "' + ATaskName + '"'), 
    nil, SW_HIDE); 
    ShellExecute(0, nil, 'schtasks', PChar('/create /tn "' + ATaskName + '" ' + 
    '/tr "' + AFileName + '" /sc ONSTART /ru "' + AUserAccount + '"'), 
    nil, SW_HIDE); 
end; 

procedure TForm1.Button2Click(Sender: TObject); 
begin 
    ScheduleRunAtStartup('myjob', 'C:\Application.exe', 'System'); 
end; 
+0

वैसे यह सफलतापूर्वक निर्धारित कार्य में एडीडी है लेकिन विंडोज़ स्टार्ट-अप पर नहीं चलता है, मुझे उम्मीद है कि मेरा (कैस्पर्सकी एंटी-वायरस) अनुसूचित कार्य को अवरुद्ध नहीं करेगा। क्या करें ? मैंने "सिस्टम" उपयोगकर्ता को मेरे वर्तमान उपयोगकर्ता के रूप में बदलने की कोशिश की लेकिन अभी भी असफल रहा। – user1023395

+0

@ user1023395: यदि आप अपने उपयोगकर्ता खाते का उपयोग करना चाहते हैं, तो आपको संबंधित पासवर्ड ('/ RP' कमांड स्विच का उपयोग करके) भी प्रदान करना होगा। अगर आपके खाते में अभी तक कोई पासवर्ड नहीं है, तो आपको इसे असाइन करना होगा। (एक पासवर्ड रहित उपयोगकर्ता खाता शेड्यूलिंग के साथ उपयोग नहीं किया जा सकता है।) –

+0

मैं कबूल करता हूं कि आवेदन निष्पादित होने पर मैंने परीक्षण नहीं किया है (मुझे निर्धारित कार्यों के साथ अधिक अनुभव नहीं है), मैंने केवल तभी परीक्षण किया है जब वे बनाए जाते हैं। और @AndriyM सही है, आपको या तो खाते में पासवर्ड रखना होगा और रजिस्ट्री सेटिंग्स को संशोधित करना होगा। एक स्पष्ट है, निर्धारित पासवर्ड बिना इस पासवर्ड सुरक्षा के आपके सिस्टम सुरक्षा के लिए एक बड़ा छेद होगा। – TLama

-1

पता लगा समस्या यहाँ यह ठीक काम करता है

विंडोज 7 प्रो पर परीक्षण किया गया है, तो किसी भी एक XP प्रो पर मेरे लिए परीक्षण कर सकते हैं की सराहना b होगा

procedure ScheduleRunAtStartup(const ATaskName: string; const AFileName: string; 
    const GetPCName: string ; Const GetPCUser: String); 
begin 
    ShellExecute(0, nil, 'schtasks', PChar('/delete /f /tn "' + ATaskName + '"'), 
    nil, SW_HIDE); 
    ShellExecute(0, nil, 'schtasks', PChar('/create /tn "' + ATaskName + '" ' + '/tr "' + QuotedStr(AFileName) + '" /sc ONLOGON /ru "' + GetPCName+'\'+GetPCUser + '"'), nil, SW_HIDE) 
end; 
+0

मैंने विंडोज एक्सपी प्रोफेशनल एसपी 3 पर कोशिश की है, लेकिन नहीं, यह पासवर्ड के बिना काम नहीं करता है। यह वही है जैसे आप अनुसूचित कार्य विज़ार्ड के माध्यम से एक निर्धारित कार्य बनाते हैं। जब मैंने विज़ार्ड समाप्त कर लिया है तो मुझे चेतावनी संदेश मिला है 'नया कार्य बनाया गया है, लेकिन ऐसा नहीं हो सकता क्योंकि खाता जानकारी सेट नहीं की जा सकी। विशिष्ट त्रुटि है: 0x80070005: एक्सेस अस्वीकार कर दी गई है। 'और मैं उस मशीन पर पासवर्ड के बिना व्यवस्थापक हूं। तो वास्तव में, यदि आपके खाते पर पासवर्ड सेट नहीं है, तो यह काम नहीं करेगा। यह आपके सिस्टम के लिए बहुत अधिक सुरक्षा जोखिम होगा। – TLama

+2

यह एक उत्तर नहीं है। आपको संकेत देना चाहिए कि क्यों * यह कुछ कोड नीचे slapping (और दूसरों को अन्य प्लेटफार्मों पर परीक्षण करने के लिए कहने के बजाय एक उत्तर है, यह भी जवाब नहीं देता है। – casperOne

+0

उद्धरण के बिना (AFileName) यह पैरामीटर के रूप में पथ सेट करता है विंडोज 7 @TLAMA पर एप्लिकेशन टेस्ट नहीं चलाएगा ONSTART को ONLOGON – user1023395

संबंधित मुद्दे