क्या एक निश्चित कार्यक्रम को बंद करने से अतिथि उपयोगकर्ताओं को ब्लॉक करने का एक तरीका है?


38

मेरे पास एक लैपटॉप है और इसका उपयोगकर्ता एक अतिथि खाता चला रहा है,

2 प्रोग्राम हैं जो सिस्टम शुरू होने पर स्वचालित रूप से शुरू होते हैं (NetLimiter & TeamViewer)। ये कार्यक्रम ट्रे में छिपे होते हैं लेकिन अतिथि उपयोगकर्ता चाहें तो उन्हें बंद कर सकता है। क्या इससे बचाव का कोई तरीका है?

मेरे पास लैपटॉप तक पूरी पहुंच है, इसलिए यदि मैं इसे करने के लिए कोई कॉन्फ़िगरेशन या प्रोग्राम स्थापित कर सकता हूं।



17
टीमव्यूअर को एक सेवा के रूप में भी चलाया जा सकता है। यदि प्रशासक (व्यवस्थापक खाते के तहत) द्वारा स्थापित किया गया है, तो एक सामान्य उपयोगकर्ता को इसे बंद करने में सक्षम नहीं होना चाहिए। appdataworks.com/…
आजसू

1
चूंकि उपयोगकर्ता को रोकने के लिए लगभग कोई रास्ता नहीं है जो मेनू के माध्यम से इसे बाहर निकलने के लिए टूल का GUI खोल सकता है, एक नियमित स्क्रिप्ट चलाने के विकल्प के बारे में क्या है जो यह देखता है कि प्रोग्राम अभी भी चल रहा है और बस इसे पुनरारंभ करता है, यदि उपयोगकर्ता इसे बंद कर दिया है? तो उपयोगकर्ता इसे बंद कर सकता है, लेकिन यह कुछ सेकंड के बाद स्वचालित रूप से पुनरारंभ हो जाएगा?
फाल्को

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

जवाबों:


50

कार्य प्रबंधक के माध्यम से समापन को रोकने के लिए

" प्रोसेस एक्सप्लोरर " प्राप्त करें और "टर्मिनेट" अनुमतियाँ नहीं करने के लिए दो कार्यक्रमों पर "अतिथि" के लिए अनुमतियाँ सेट करें।

  1. प्रक्रिया खोजकर्ता सूची में प्रक्रिया ढूंढें और "गुण" पर राइट-क्लिक करें
  2. सुरक्षा -> अनुमतियाँ
  3. "अतिथि" -> संपादित करें का चयन करें।

स्क्रीनशॉट

यह अभी भी उन्हें केवल कार्यक्रम को सामान्य रूप से बंद करने से नहीं रोकता है। आपको तृतीय पक्ष प्रोग्राम या रजिस्ट्री फ़िडलिंग का उपयोग करके विंडो और सिस्टम ट्रे आइकन को छिपाना होगा।

बहुत अधिक बैंडविड्थ का उपयोग करके एक नेटवर्क उपयोगकर्ता को थ्रॉटल करना

यह आपकी वास्तविक समस्या प्रतीत होती है।

देख:


30
क्या यह केवल प्रक्रिया के विशिष्ट चल रहे उदाहरण या वर्तमान और भविष्य के सभी पर लागू होता है?
मार्टिन स्मिथ

25
@MartinSmith यह केवल वर्तमान में चल रहे एक को प्रभावित करेगा।
बेन एन

1
जिज्ञासा से बाहर (जैसा कि लाल एक्स बटन पर क्लिक करने पर क्या होता है) मैंने यह कोशिश की है और यह मेरे लिए काम नहीं करता है।
पावेल

11
मेनू या लाल एक्स प्रोग्राम को स्वैच्छिक रूप से बाहर निकलने के लिए कहता है। कार्य प्रबंधक में समाप्त होता है।
ज़ेन लिंक्स

@ZanLynx हां, अर्थात, मेरी समझ में, वह सममूल्य जो कहता है [...] लेकिन अतिथि उपयोगकर्ता यदि चाहे तो उन्हें बंद कर सकता है। क्या इससे बचाव का कोई तरीका है?
पावेल

35

प्रोसेस एक्सप्लोरर का उत्तर एक बार काम करता है, लेकिन आप चाहते हैं कि कंप्यूटर रिबूट होने के बाद भी यह लागू हो। ऐसा करने के लिए, आप PowerShell का उपयोग कर सकते हैं:

Param (
    [string[]]$ProcessNames,
    [string]$DenyUsername
)

$cscode = @"
using System;
using System.Security;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

public class ProcessSecurity : NativeObjectSecurity
{
    public ProcessSecurity(SafeHandle processHandle)
        : base(false, ResourceType.KernelObject, processHandle, AccessControlSections.Access)
    {

    }

    public void AddAccessRule(ProcessAccessRule rule)
    {
        base.AddAccessRule(rule);
    }

    // this is not a full impl- it only supports writing DACL changes
    public void SaveChanges(SafeHandle processHandle)
    {
        Persist(processHandle, AccessControlSections.Access);
    }

    public override Type AccessRightType
    {
        get { return typeof(ProcessAccessRights); }
    }

    public override AccessRule AccessRuleFactory(System.Security.Principal.IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type)
    {
        return new ProcessAccessRule(identityReference, (ProcessAccessRights)accessMask, isInherited, inheritanceFlags, propagationFlags, type);
    }

    public override Type AccessRuleType
    {
        get { return typeof(ProcessAccessRule); }
    }

    public override AuditRule AuditRuleFactory(System.Security.Principal.IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags)
    {
        throw new NotImplementedException();
    }

    public override Type AuditRuleType
    {
        get { throw new NotImplementedException(); }
    }
}

public class ProcessAccessRule : AccessRule
{
    public ProcessAccessRule(IdentityReference identityReference, ProcessAccessRights accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type)
        : base(identityReference, (int)accessMask, isInherited, inheritanceFlags, propagationFlags, type)
    {
    }

    public ProcessAccessRights ProcessAccessRights { get { return (ProcessAccessRights)AccessMask; } }
}

[Flags]
public enum ProcessAccessRights
{
    STANDARD_RIGHTS_REQUIRED = (0x000F0000),
    DELETE = (0x00010000), // Required to delete the object. 
    READ_CONTROL = (0x00020000), // Required to read information in the security descriptor for the object, not including the information in the SACL. To read or write the SACL, you must request the ACCESS_SYSTEM_SECURITY access right. For more information, see SACL Access Right. 
    WRITE_DAC = (0x00040000), // Required to modify the DACL in the security descriptor for the object. 
    WRITE_OWNER = (0x00080000), // Required to change the owner in the security descriptor for the object. 

    PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF, //All possible access rights for a process object.
    PROCESS_CREATE_PROCESS = (0x0080), // Required to create a process. 
    PROCESS_CREATE_THREAD = (0x0002), // Required to create a thread. 
    PROCESS_DUP_HANDLE = (0x0040), // Required to duplicate a handle using DuplicateHandle. 
    PROCESS_QUERY_INFORMATION = (0x0400), // Required to retrieve certain information about a process, such as its token, exit code, and priority class (see OpenProcessToken, GetExitCodeProcess, GetPriorityClass, and IsProcessInJob). 
    PROCESS_QUERY_LIMITED_INFORMATION = (0x1000),
    PROCESS_SET_INFORMATION = (0x0200), // Required to set certain information about a process, such as its priority class (see SetPriorityClass). 
    PROCESS_SET_QUOTA = (0x0100), // Required to set memory limits using SetProcessWorkingSetSize. 
    PROCESS_SUSPEND_RESUME = (0x0800), // Required to suspend or resume a process. 
    PROCESS_TERMINATE = (0x0001), // Required to terminate a process using TerminateProcess. 
    PROCESS_VM_OPERATION = (0x0008), // Required to perform an operation on the address space of a process (see VirtualProtectEx and WriteProcessMemory). 
    PROCESS_VM_READ = (0x0010), // Required to read memory in a process using ReadProcessMemory. 
    PROCESS_VM_WRITE = (0x0020), // Required to write to memory in a process using WriteProcessMemory. 
    SYNCHRONIZE = (0x00100000), // Required to wait for the process to terminate using the wait functions. 
}
"@

Add-Type -TypeDefinition $cscode

$ProcessNames | % {
    Get-Process -ProcessName $_ | % {
        $handle = $_.SafeHandle
        $acl = New-Object ProcessSecurity $handle
        $ident = New-Object System.Security.Principal.NTAccount $DenyUsername
        $ace = New-Object ProcessAccessRule ($ident, 'PROCESS_TERMINATE, PROCESS_SUSPEND_RESUME, WRITE_DAC', $false, 'None', 'None', 'Deny')
        $acl.AddAccessRule($ace)
        $acl.SaveChanges($handle)
    }
}

यह इस स्टैक ओवरफ्लो जवाब पर आधारित है । मूल रूप से, आप इसे संरक्षित करने के लिए प्रक्रियाओं की सूची और उपयोगकर्ता को सुरक्षा प्रदान करते हैं, और यह प्रक्रियाओं के ACL को उचित रूप से निर्धारित करता है। इसे एक .ps1फ़ाइल के रूप में सहेजें (कहीं उपयोगकर्ता पढ़ नहीं सकता है लेकिन लिख सकता है), फिर उपयोगकर्ता की स्टार्टअप में कुछ इस तरह से एक बैच फ़ाइल डालें:

powershell \path\to\script.ps1 ('snippingtool', 'mspaint') 'Guest' -executionpolicy bypass

यही कारण है कि सुरक्षा करता है snippingtool.exeऔर mspaint.exeसे (Snipping उपकरण और पेंट) अतिथि ने मार डाला जा रहा है।

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

पहुंच अस्वीकृत

यह भी ध्यान दें कि यह उपयोगी नहीं होगा यदि आप जिस खाते से इसका परीक्षण करते हैं वह एक व्यवस्थापक है, या अधिक सटीक है SeDebugPrivilege

एक्स को उनकी खिड़कियों पर क्लिक करना या अनुप्रयोगों की स्वयं की करीबी कार्यक्षमता का उपयोग करना अभी भी प्रक्रियाओं को बाहर कर देगा, क्योंकि सभी प्रक्रियाओं को चलाने से रोकने का निर्णय लेने के लिए स्वतंत्र हैं। आपको अधिसूचना क्षेत्र को छिपाने की आवश्यकता हो सकती है, जैसा कि एक अन्य उत्तर में वर्णित है। इसके अलावा, चूंकि ये महत्वपूर्ण प्रक्रियाएं अतिथि उपयोगकर्ता के रूप में चलती हैं, इसलिए उपयोगकर्ता प्रक्रिया ऑब्जेक्ट्स का स्वामी है, और एसीएल को फिर से समायोजित करने में सक्षम होगा, या PROCESS_VM_WRITEप्रक्रियाओं की मेमोरी पर स्क्रैबल करने और उन्हें क्रैश करने के लिए क्षमताओं का उपयोग कर सकता है। उन लोगों के लिए एक खाली ऐस जोड़कर हल किया जा सकता OWNER RIGHTSऔर बदलकर 'PROCESS_TERMINATE, PROCESS_SUSPEND_RESUME, WRITE_DAC'करने के लिए 'PROCESS_ALL_ACCESS'क्रमश:।

GPO के माध्यम से टास्क मैनेजर तक पहुंच से इनकार करना उपयोगकर्ता को टास्क मैनेजर (स्पष्ट रूप से) का उपयोग करने से रोक देगा और सबसे सीधा समाधान है, लेकिन उनके स्वयं के कार्यक्रम (या taskkill) को चलाने से कुछ भी नहीं रोक रहा है जो समूह नीति का पालन नहीं करता है। यह सबसे अच्छा होगा यदि आप जिन प्रक्रियाओं का बचाव करने की कोशिश कर रहे हैं, वे एक अलग उपयोगकर्ता के रूप में भाग रहे हैं, जिसकी तुलना में आप बचाव कर रहे हैं।

बेशक, अगर आपका मेहमान इन विभिन्न "सुरक्षा" को दरकिनार करने के लिए उस मुसीबत में जाने के लिए तैयार है, तो आपको तकनीकी समस्या की तुलना में एक सामाजिक समस्या हो सकती है।


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

8

यह वास्तव में इस बात पर निर्भर करता है कि आप अपने अतिथि उपयोगकर्ता खाते को कितना लॉक करना चाहते हैं, इस पर कुछ और जानकारी जो आप चाहते हैं कि आपका अतिथि खाता सक्षम है / नहीं करना आसान नहीं होगा। कंप्यूटर डोमेन भी जुड़ा हुआ है?

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

  1. अधिसूचना क्षेत्र को पूरी तरह से छिपाएं ताकि आपका उपयोगकर्ता पृष्ठभूमि में चल रहे किसी भी एप्लिकेशन तक न पहुंच सके। यदि आपको उन्हें NetLimiter और TeamViewer के साथ बातचीत करने की आवश्यकता है, तो वे उन्हें हमेशा स्टार्ट मेनू से लॉन्च कर सकते हैं।

    आपके द्वारा आवश्यक विशिष्ट जीपी आइटम उपयोगकर्ता कॉन्फ़िगरेशन> प्रशासनिक टेम्पलेट> प्रारंभ मेनू और कार्यपट्टी> अधिसूचना क्षेत्र छिपाएं

  2. टास्क मैनेजर तक अक्षम पहुंच जो उन्हें प्रक्रिया को समाप्त करने से रोकना चाहिए।

    उपयोगकर्ता कॉन्फ़िगरेशन> व्यवस्थापकीय टेम्पलेट> सिस्टम> कार्य प्रबंधक निकालें

  3. मेरा मानना ​​है कि NetLimiter में विभिन्न उपयोगकर्ताओं के लिए अनुमतियाँ सेट करने की क्षमता है। इन्हें देखें और देखें कि क्या आप एप्लिकेशन को नियंत्रित करने के लिए उपयोगकर्ता खाते की क्षमता को निकाल सकते हैं।

यह एक अच्छी शुरुआत है जो अधिकांश उपयोगकर्ताओं को सीमित कर देनी चाहिए यदि आप उपयोगकर्ता थोड़े अधिक उन्नत हैं तो आपको कुछ और व्यापक समूह नीतियां निर्धारित करनी पड़ सकती हैं

विशिष्ट उपयोगकर्ताओं के लिए पॉलिस को सीमित करने के लिए जीपी का उपयोग करने के लिए यहां एक अच्छा मार्गदर्शक है यदि आपको इसकी आवश्यकता है तो http://www.sevenforums.com/tutorials/151415-group-policy-apply-specific-user-group.html


वे शायद अभी भी घड़ी देखने में सक्षम होना चाहते हैं।
मिचेल जॉनसन

घड़ी तब भी दिखाई जाती है जब आप छिपाते हैं अधिसूचना क्षेत्र। वे अलग-अलग ओएस घटक हैं
मैट जेएन

1

सभी विस्तृत उत्तर के लिए आप सभी का धन्यवाद, मैंने टिप्पणी में कुछ सुझावों का उपयोग किया, यहाँ मैंने क्या किया है:

  • अतिथि खाते को पूरी तरह से अक्षम करें क्योंकि किसी भी कारण से रजिस्ट्री प्रविष्टि को संपादित करने के लिए यह काम नहीं करेगा, आपको व्यवस्थापक की अनुमति की आवश्यकता होगी, और एक बार आपको यह मिल जाएगा, संशोधन को व्यवस्थापक खाते के लिए भी लागू किया जाएगा (यदि यह एक सामान्य बात है तो सुनिश्चित नहीं है) या मेरे लिए सिर्फ एक बग)

  • एक नया उपयोगकर्ता बनाएँ और इसके लिए निम्न कार्य करें:

  • ट्रे आइकन अक्षम करें (रजिस्ट्री में)

    • इसकी वजह से वॉल्यूम कंट्रोल गैजेट जोड़ना पड़ा।
  • नियंत्रण कक्ष अक्षम करें (रजिस्ट्री में)

  • कार्य प्रबंधक अक्षम करें (रजिस्ट्री में)

  • कुछ अनुमतियों से इंकार करें, इसलिए वह इन सॉफ्टवेयर्स के स्थानों तक नहीं पहुंच सकते (उन्हें हटा नहीं सकते या उन्हें अनइंस्टॉल नहीं कर सकते)

ऐसा करने से मेरा भाई इंटरनेट स्पीड का 20% से अधिक उपयोग नहीं कर सकता (वह सिर्फ स्ट्रीमिंग और टॉरेंटिंग को बंद नहीं करेगा ...) और मुझे लगता है कि ये उसे बंद रखने के लिए पर्याप्त हैं।

एक बार फिर धन्यवाद!


हम्म, इसलिए मूल रूप से यह जवाब है "अतिथि खाते का उपयोग न करें।" यह दुखद विरोधी जलवायु है।
मैं कहता हूं मोनिका

लेकिन व्यावहारिक: आप अतिथि की तुलना में बहुत सीमित उपयोगकर्ता पर अधिक नियंत्रण प्राप्त करते हैं।
संगीत 2

1
अतिथि खाते को संपादित करना संभवत: इसलिए है क्योंकि आप कुंजी को बदल रहे हैं HKLM, जो इसे सभी उपयोगकर्ताओं के लिए बदल देता है (अनिवार्य रूप से "डिफ़ॉल्ट" सेटिंग को संशोधित करता है जो कि प्रति-उपयोगकर्ता सेटिंग अनुपस्थित है)। इसके अलावा, यदि संभव हो तो प्रति-डिवाइस आधार पर राउटर पर इंटरनेट की गति सीमाएं संभवतः सबसे अच्छी हैं; आपको अपने मैक पते को बदलने या उसके चारों ओर पाने के लिए राउटर कॉन्फ़िगरेशन तक पहुंच प्राप्त करने की आवश्यकता होगी।
wizzwizz4

5
आप अपने राऊटर में सिर्फ QoS सेटअप कर सकते हैं
वेन वर्नर

6
यह XY समस्या का एक उत्कृष्ट उदाहरण है। आप एक समाधान X के लिए पूछते हैं जब आपको वास्तव में Y की आवश्यकता होती है: "मैं अपने भाई को बैंडविड्थ के 20% से अधिक का उपयोग करने से कैसे रोक सकता हूं?" जो कंप्यूटर पर राउटर की तुलना में कहीं बेहतर तरीके से हल किया गया है।
फ्लोरिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.