स्टार्टअप पर विंडोज 7 पर व्यवस्थापक के रूप में प्रोग्राम को स्वचालित रूप से कैसे चलाएं?


82

मैंने अपने बच्चों की गतिविधि पर नज़र रखने के लिए अपना स्वयं का अभिभावक नियंत्रण ऐप बनाया। ऐप का एकमात्र GUI एक टास्क बार आइकन है। प्रोग्राम को व्यवस्थापक के रूप में स्थापित किया गया है। मैं इस कार्यक्रम को स्वचालित रूप से विंडोज स्टार्टअप पर व्यवस्थापक उपयोगकर्ता के रूप में शुरू करना चाहता हूं, ताकि मानक उपयोगकर्ता इसे कार्य प्रबंधक से नहीं मार सकें।

मैं एक रजिस्ट्री कुंजी बना सकता हूं:

HKLM\Software\Microsoft\Windows\CurrentVersion\Run

जब विंडोज शुरू होता है तो इसे स्वचालित रूप से चलाने के लिए। समस्या यह है कि प्रोग्राम को लॉग इन (मानक) उपयोगकर्ता के रूप में शुरू किया गया है।

मैं इसे एक उन्नत मोड में कैसे चला सकता हूं? क्या यह Win7 में बिल्कुल संभव है?


1
शायद एक बड़ी समस्या यह है कि उपयोगकर्ता में लॉग इन न होने पर कार्यक्रम बिल्कुल भी शुरू नहीं होता है। यह लॉगिन पर प्रोग्राम चलाने के लिए एक तंत्र है (जैसे .loginयूनिक्स पर आपकी स्क्रिप्ट), बूट समय पर (कुछ /etc/rc/...स्क्रिप्ट की तरह ) चलाने के लिए नहीं ।
कज़

@ काज: इस सवाल के संदर्भ में, यह एक समस्या नहीं लगती है (जब तक कि लॉगिन स्क्रीन के साथ बच्चे की बातचीत का अवलोकन करने की कोशिश न की जाए)
बेन वायगेट

जवाबों:


61

आपको इसे कार्य शेड्यूलर में प्लग करने की आवश्यकता है, जैसे कि यह उपयोगकर्ता के लॉगिन के बाद लॉन्च किया जाता है, सिस्टम पर प्रशासनिक पहुंच वाले उपयोगकर्ता खाते का उपयोग करके, उस खाते द्वारा लॉन्च की गई प्रक्रियाओं के लिए उच्चतम विशेषाधिकार के साथ।

यह वह कार्यान्वयन है जो एक सामान्य उपयोगकर्ता के रूप में लॉग इन करते समय प्रशासनिक विशेषाधिकारों के साथ ऑटोस्टार्ट प्रक्रियाओं के लिए उपयोग किया जाता है।

मैंने इसका उपयोग 'ओपनवीपीएन जीयूआई' सहायक प्रक्रिया को शुरू करने के लिए किया है, जिसे सही ढंग से काम करने के लिए उन्नत विशेषाधिकार की आवश्यकता है, और इस प्रकार रजिस्ट्री कुंजी से ठीक से लॉन्च नहीं होगा।

कमांड लाइन से, आप एक XML विवरण से कार्य बना सकते हैं जिसे आप पूरा करना चाहते हैं; उदाहरण के लिए हमारे पास यह है, मेरे सिस्टम से निर्यात किया गया है, जो सबसे अधिक विशेषाधिकारों के साथ नोटपैड शुरू करेगा जब मैं लॉग इन करता हूं:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2015-01-27T18:30:34</Date>
    <Author>Pete</Author>
  </RegistrationInfo>
  <Triggers>
    <LogonTrigger>
      <StartBoundary>2015-01-27T18:30:00</StartBoundary>
      <Enabled>true</Enabled>
    </LogonTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>CHUMBAWUMBA\Pete</UserId>
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>"c:\windows\system32\notepad.exe"</Command>
    </Exec>
  </Actions>
</Task>

और यह एक व्यवस्थापक कमांड प्रॉम्प्ट द्वारा पंजीकृत है:

schtasks /create /tn "start notepad on login" /xml startnotepad.xml

इस जवाब को वास्तव में अन्य स्टैनेक्सचेंज साइटों में से एक में स्थानांतरित किया जाना चाहिए, क्योंकि यह वास्तव में प्रति प्रोग्रामिंग प्रोग्रामिंग सवाल नहीं है।


सूचना के लिए आपका बहुत बहुत धन्यवाद। मैं इसे आज़माता हूँ और देखता हूँ कि यह कैसे काम करता है।
न्यूमैन 25'11

1
"उपयोगकर्ता के लॉगिन के बाद" "विंडोज स्टार्टअप" नहीं है।
कज़

हां, लेकिन आपके पास तब तक उपयोग करने के लिए एक डेस्कटॉप नहीं है जब तक कि आपने लॉग इन नहीं किया हो
पेटेश डिक

6
@ प्रीतेश आपको इस तरह से चलने के लिए एक यूआई-आधारित ऐप कैसे मिला? जब मैं टास्क शेड्यूल का उपयोग करता हूं तो मुझे चलाने के लिए एक ऐप मिल सकता है लेकिन मैं इसका UI नहीं देखता हूं।
गोनज़ोब्रिन्स 1

मैं सोच रहा था कि क्या रजिस्ट्री परिवर्तन के माध्यम से ऐसा करने का कोई तरीका है। यदि हाँ, तो इसे ऑपरेटिंग सिस्टम को बूट किए बिना भी (पूर्व में) शेड्यूल किया जा सकता है।
सूपालाजो डी एरियेरेज़

40
schtasks /create /sc onlogon /tn MyProgram /rl highest /tr "exeFullPath"

2
यह सत्र 0 में नहीं चलेगा और आप UI नहीं देख पाएंगे ?? मैं एक ही चीज़ चाहता था और यह उसने किया लेकिन यह मेरे उपयोगकर्ता नाम के तहत सत्र 0 में चल रहा था और इसलिए यूआई उपलब्ध नहीं था
गौतम

4
"onlogon" विंडोज स्टार्टअप नहीं है।
कज़

1
विंडोज 7 पर, यह उपयोगकर्ता के डेस्कटॉप पर चलता है। इसे calc.exe के साथ आज़माएँ।
व्लादिमीर पेंटेलेव

1
@CyberShadow मैं इसे एक ऐप के साथ करने की कोशिश कर रहा हूं जिसके लिए व्यवस्थापक अधिकारों की आवश्यकता है। मैं इसे कार्य प्रबंधक में देखता हूं लेकिन इसका UI दिखाई नहीं देता है।
गोंजोब्रैन्स

2
जवाब के लिए धन्यवाद। हमारे आईटी विभाग ने हाल ही में हमारी कंपनी डोमेन पर सभी कंप्यूटरों के लिए समूह नीति के माध्यम से यूएसी को मजबूर किया। दुखद परिणाम के साथ कि यदि आप प्रशासक के रूप में कमांड प्रॉम्प्ट चलाते हैं, तो आपके ड्राइव मैपिंग उपलब्ध नहीं हैं। पहले, मैंने "रन" रजिस्ट्री कुंजी के माध्यम से लॉगऑन पर चलने के लिए एक छोटी .bat फ़ाइल स्थापित की थी जो मेरे सभी ड्राइव मैपिंग को सेट करेगी। मुझे स्टार्टअप पर सिस्टम खाते के लिए एक समान .bat चलाने का एक तरीका चाहिए था। "schtasks / ru सिस्टम" वास्तव में मैं क्या जरूरत है।
सांई

15

यह नहीं हो सकता।
हालाँकि, आप एक सेवा बना सकते हैं जो एक प्रशासनिक उपयोगकर्ता के अंतर्गत चलती है।

सेवा स्वचालित रूप से स्टार्टअप पर चल सकती है और आपके मौजूदा एप्लिकेशन के साथ संवाद कर सकती है।
जब एप्लिकेशन को व्यवस्थापक के रूप में कुछ करने की आवश्यकता होती है, तो वह सेवा को इसके लिए करने के लिए कह सकता है।

याद रखें कि एक साथ कई उपयोगकर्ताओं को लॉग इन किया जा सकता है।


शीघ्र उत्तर के लिए बहुत बहुत धन्यवाद। दरअसल, मैंने विंडो सर्विस से ऐप चलाने की कोशिश की, लेकिन यह काम नहीं कर सका। मैं कार्य प्रबंधक (सिस्टम उपयोगकर्ता के रूप में) में कार्यक्रम देख सकता था, लेकिन आइकन टास्कबार में दिखाई नहीं दे रहा है। जब मैं StartInfo में Verb = "runas" जोड़ता हूं, तो मुझे एक अपवाद मिला "इस कमांड को संसाधित करने के लिए पर्याप्त भंडारण उपलब्ध नहीं है"। मुझे लगता है कि हो सकता है क्योंकि पुष्टि के लिए उपयोगकर्ता से पूछने के लिए GUI पॉपअप करने का कोई तरीका नहीं है।
न्यूमैन 25'11

8
@miliu: एक सेवा उपयोगकर्ता के साथ बातचीत नहीं कर सकती है। आपको दो कार्यक्रम बनाने की ज़रूरत है जो एक दूसरे के साथ संवाद करते हैं।
SLaks 25:11

6

मुझे लगता है कि ऑटोस्टार्ट कार्यक्रमों में कार्य अनुसूचक का उपयोग करना बहुत उपयोगकर्ता के अनुकूल नहीं है, और कभी-कभी इसका मेरे लिए साइड इफेक्ट हुआ है (उदाहरण के लिए एक कार्यक्रम के लिए ट्रे आइकन नहीं जोड़ा गया है)।

इसे मापने के लिए, मैंने एलिवेटेड स्टार्टअप नाम से एक कार्यक्रम बनाया है जो पहले प्रशासक के विशेषाधिकारों के साथ फिर से जुड़ता है, फिर यह एक निर्देशिका में सभी फाइलों को लॉन्च करता है। चूंकि एलिवेटेड स्टार्टअप अब ऊंचा हो गया है, इसलिए इसके बाद शुरू होने वाले सभी कार्यक्रमों को प्रशासक विशेषाधिकार भी दिया जाता है। निर्देशिका क्लासिक स्टार्टअप निर्देशिका के बगल में प्रारंभ मेनू पर है, और बहुत ही समान काम करती है।

जब आपकी UAC सेटिंग्स पर निर्भर करता है, तो आप एक UAC संवाद का सामना कर सकते हैं।

आप यहां कार्यक्रम प्राप्त कर सकते हैं: https://stefansundin.github.io/elevatedstartup/


चूंकि यह हालिया उत्तर है, मैं एक टिप्पणी जोड़ना चाहूंगा। मैं विंडोज 10 पर टास्क शेड्यूलर का उपयोग करके अपने कार्यक्रम के साथ ओपी के समान करने की कोशिश कर रहा हूं। हालांकि, यह मेरे कार्यक्रम को पृष्ठभूमि प्रक्रिया के रूप में शुरू करता है जो कि मैं नहीं चाहता। मैं चाहता हूं कि मेरा आवेदन एक प्रशासक के रूप में सामान्य रूप से शुरू हो। क्या आपका कार्यक्रम इसके लिए जिम्मेदार है?
ThN

मुझे विश्वास है कि यह होगा। कार्यक्रम शुरू होना चाहिए जैसे कि आपने शॉर्टकट पर क्लिक किया और "व्यवस्थापक विशेषाधिकारों के साथ चलाएँ" का उपयोग किया। यदि आप जैसा चाहते हैं वैसा बर्ताव नहीं करता है, तो मुझे आपके उपयोग के मामले के बारे में अधिक जानकारी प्राप्त करने और आपके लिए कार्यक्रम का काम करने में खुशी होगी।
स्टेफन्सुंडिन

3

अपने एप्लिकेशन की संगतता व्यवस्थापन पर सेट करना (Run theprogram as an administrator)

इसे प्लग इन करें task scheduler, फिर बंद करें UAC


मुझे ठीक यही समस्या है। UI दिखाई नहीं देता है। कोई मदद
सेंथिल मुथैया

1
@SenthilMuthiah ऐसा इसलिए है क्योंकि आपका प्रोग्राम एक एप्लिकेशन के रूप में नहीं बल्कि एक पृष्ठभूमि प्रक्रिया के रूप में चलाया जाता है। वही चीज़ मेरे साथ हुई।
ThN

3

टास्कसैडलर लाइब्रेरी के माध्यम से व्यवस्थापक के रूप में काम करते हुए आप इसे स्थापित कर सकते हैं । मैं यह धारणा बना रहा हूँ कि .NET / C # एक उपयुक्त मंच / भाषा है जो आपके संबंधित प्रश्नों को दिया गया है।

यह लाइब्रेरी आपको टास्क शेड्यूलर एपीआई में बारीक पहुंच प्रदान करती है, जिससे आप ऐसी सेटिंग्स को समायोजित कर सकते हैं जिन्हें आप कॉल करके कमांड लाइन के माध्यम से सेट नहीं कर सकते हैं schtasks, जैसे कि स्टार्टअप की प्राथमिकता। पैतृक नियंत्रण अनुप्रयोग होने के नाते, आप इसे 0 (अधिकतम) की स्टार्टअप प्राथमिकता देना चाहेंगे, जो schtasksडिफ़ॉल्ट रूप से 7 की प्राथमिकता बनाएगा।

नीचे लॉगऑन पर व्यवस्थापक के रूप में वांछित अनुप्रयोग को चलाने के लिए ठीक से कॉन्फ़िगर किए गए स्टार्टअप कार्य को स्थापित करने का एक कोड उदाहरण है। यह कोड उसी प्रक्रिया के लिए एक कार्य स्थापित करेगा जो इससे चल रही है।

/*
Copyright © 2017 Jesse Nicholson  
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

/// <summary>
/// Used for synchronization when creating run at startup task.
/// </summary>
private ReaderWriterLockSlim m_runAtStartupLock = new ReaderWriterLockSlim();

public void EnsureStarupTaskExists()
{
    try
    {
        m_runAtStartupLock.EnterWriteLock();


        using(var ts = new Microsoft.Win32.TaskScheduler.TaskService())
        {
            // Start off by deleting existing tasks always. Ensure we have a clean/current install of the task.
            ts.RootFolder.DeleteTask(Process.GetCurrentProcess().ProcessName, false);

            // Create a new task definition and assign properties
            using(var td = ts.NewTask())
            {
                td.Principal.RunLevel = Microsoft.Win32.TaskScheduler.TaskRunLevel.Highest;
                // This is not normally necessary. RealTime is the highest priority that
                // there is.
                td.Settings.Priority = ProcessPriorityClass.RealTime;
                td.Settings.DisallowStartIfOnBatteries = false;
                td.Settings.StopIfGoingOnBatteries = false;
                td.Settings.WakeToRun = false;
                td.Settings.AllowDemandStart = false;
                td.Settings.IdleSettings.RestartOnIdle = false;                    
                td.Settings.IdleSettings.StopOnIdleEnd = false;
                td.Settings.RestartCount = 0;                    
                td.Settings.AllowHardTerminate = false;
                td.Settings.Hidden = true;
                td.Settings.Volatile = false;
                td.Settings.Enabled = true;
                td.Settings.Compatibility = Microsoft.Win32.TaskScheduler.TaskCompatibility.V2;
                td.Settings.ExecutionTimeLimit = TimeSpan.Zero;

                td.RegistrationInfo.Description = "Runs the content filter at startup.";

                // Create a trigger that will fire the task at this time every other day
                var logonTrigger = new Microsoft.Win32.TaskScheduler.LogonTrigger();
                logonTrigger.Enabled = true;                    
                logonTrigger.Repetition.StopAtDurationEnd = false;
                logonTrigger.ExecutionTimeLimit = TimeSpan.Zero;
                td.Triggers.Add(logonTrigger);

                // Create an action that will launch Notepad whenever the trigger fires
                td.Actions.Add(new Microsoft.Win32.TaskScheduler.ExecAction(Process.GetCurrentProcess().MainModule.FileName, "/StartMinimized", null));

                // Register the task in the root folder
                ts.RootFolder.RegisterTaskDefinition(Process.GetCurrentProcess().ProcessName, td);
            }
        }                
    }
    finally
    {
        m_runAtStartupLock.ExitWriteLock();
    }
}

यह एक चालाक पुस्तकालय है - बस एक नोट है, हालांकि। "रीयलटाइम" में कुछ चलाना ज्यादातर समय आवश्यक नहीं है। और आपने tdइस दिशा में मुझे इंगित करने के लिए धन्यवाद का निपटान नहीं किया ।
एंडी

1
@ ध्वनि निपटान के बारे में टिप के लिए धन्यवाद। आप सही हैं, "रीयलटाइम" सामान्य रूप से आवश्यक नहीं है। यह कोड एक खुले स्रोत वेब सामग्री फ़िल्टर से कॉपी किया गया है जिसे मैंने लिखा था इसलिए यह आवश्यक है कि यह ASAP शुरू हो जाए।

2

एक कार्यक्रम जो मैंने लिखा, FarmComm, इसे हल कर सकता है। मैंने इसे ओपन-सोर्स और पब्लिक डोमेन के रूप में जारी किया।

यदि यह आपके मानदंडों को पूरा नहीं करता है, तो आप ऐसा करने के लिए आसानी से बदल सकते हैं।

farmComm:

  • एक सेवा के तहत बूट-अप पर चलता है, जो तब जारी रहता है जब उपयोगकर्ता लॉग इन या आउट करते हैं।
    • सत्र ० में
    • उपयोगकर्ता "NT AUTHORITY \ SYSTEM" के तहत।
  • मनमानी प्रक्रियाएं (आप चुनते हैं);
    • इसके अलावा सत्र में 0
    • "अदृश्य रूप से," या किसी भी उपयोगकर्ता इंटरफ़ेस / GUI को दिखाए बिना
    • ग्राफिक्स हार्डवेयर (जैसे जीपीयू) तक पहुंच के साथ।
    • सक्रिय सत्र पर प्रतिक्रिया देता है, भले ही वह सुरक्षित डेस्कटॉप सहित बदल जाए। यह इस प्रकार है:
    • केवल एक उपयोगकर्ता 8.5 मिनट के लिए निष्क्रिय होने के बाद प्रक्रियाओं को जन्म देता है
    • जब उपयोगकर्ता निष्क्रिय से फिर से शुरू होता है, तो स्पॉन को टर्मिनेट करता है

स्रोत स्क्रिप्ट यहां उपलब्ध हैं:

https://github.com/r-alex-hall/farmComm


2

आपको व्यवस्थापक स्तर उपयोगकर्ता या सेवा के रूप में एक प्रक्रिया चलाने के सुरक्षा निहितार्थों पर भी विचार करना चाहिए। यदि किसी इनपुट को ठीक से मान्य नहीं किया जा रहा है, जैसे कि वह नेटवर्क इंटरफ़ेस पर सुन रहा है। यदि इस इनपुट के लिए पार्सर ठीक से मान्य नहीं है, तो इसका दुरुपयोग किया जा सकता है, और संभवतः एक ऐसे शोषण की ओर ले जा सकता है जो कि उन्नत उपयोगकर्ता के रूप में कोड चला सकता है। abatishchev के उदाहरण में यह बहुत समस्या नहीं होनी चाहिए, लेकिन अगर यह एक उद्यम वातावरण में तैनात किया जाना था, तो व्यापक पैमाने पर तैनाती से पहले एक सुरक्षा मूल्यांकन करें।


कुछ कार्यक्रमों में उन्नयन की आवश्यकता होती है और यह सुरक्षा समस्याओं के अधीन नहीं होता है। उदाहरण के लिए, एक प्रोग्राम जो सिस्टम के तापमान पर नज़र रखता है और इसे अधिसूचना क्षेत्र में प्रदर्शित करता है, को हार्डवेयर तक पहुंचने के लिए ऊंचाई की आवश्यकता होगी, और इसे ऑटो-रन करने की आवश्यकता होगी, फिर भी सुरक्षा इसके लिए एक बिंदु है।
19

-3

मुझे लगता है कि कार्य शेड्यूल ओवरकिल (imho) होगा। Win7 के लिए एक स्टार्टअप फ़ोल्डर है।

C: \ Users \ miliu \ AppData \ Roaming \ Microsoft \ Windows \ Start मेनू \ प्रोग्राम \ स्टार्टअप

बस अपने ऑटोटार्ट अपार्टन के लिए एक शॉर्टकट बनाएं, शॉर्टकट के गुणों को संपादित करें और इसे हमेशा व्यवस्थापक के रूप में चलाएं।

आपके बच्चे निश्चित रूप से इसे बंद कर सकते हैं, लेकिन यदि वे तकनीक-प्रेमी हैं, तो वे हमेशा आपको बाहर रखने का एक तरीका ढूंढते हैं। मुझे पता है कि जब मैंने छोटी थी तो मैंने किया था।

सौभाग्य!


6
यह काम नहीं करेगा। व्यवस्थापक के रूप में चलाने के लिए सेट किए गए स्टार्टअप शॉर्टकट को विंडोज अनदेखा करेगा।
व्लादिमीर पेंटेलेव

वास्तव में? आपने कोशिश की है? क्योंकि इसका काम मेरी तरफ से ठीक है। मैं काम करने के लिए चारों ओर ध्वनि के लिए प्रशासक के रूप में मेरे LogitechSoundManager को ऑटो-स्टार्ट करना है ...
zhengtonic

मुझे यह समस्या है, भले ही स्टार्टअप फ़ोल्डर में शॉर्टकट "व्यवस्थापक के रूप में चलाएं" विकल्प की जांच की जाती है, फिर भी वे स्टार्टअप पर लोड नहीं करेंगे। किसी को भी इसे ठीक करने के लिए कोई तरीका पता है?
ycomp

2
साइबरशो सही था कंप्यूटर का यूएसी बंद था। व्यवस्थापक के रूप में काम नहीं करता है StartUp शॉर्टकट ... एक कार्यपालक का उपयोग करने के लिए है
zhengtonic

मैं विंडोज 10 पर कम से कम पाया यह काम नहीं करता है। जैसा कि @ vladimir-panteleev ने कहा, विंडोज बस इसे नजरअंदाज करने लगता है।
ई। वैन पुटीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.