2009-03-20 16 views

उत्तर

10

एक आसान तरीका: प्रक्रिया का उपयोग करें। Shutdown.exe चलाने के लिए प्रारंभ करें।

shutdown /s /t 0 

प्रोग्रामेटिक तरीका: पी/हस्ताक्षर ExitWindowsEx

के लिए एक कॉल आह्वान यह पी होगा/आह्वान:

[DllImport("aygshell.dll", SetLastError="true")] 
private static extern bool ExitWindowsEx(uint dwFlags, uint dwReserved); 

सभी परिस्थितियों में, उपयोगकर्ता कोड चलाने की आवश्यकता होगी बंद प्रणाली विशेषाधिकार (आमतौर पर कोई समस्या नहीं, लेकिन याद रखने के लिए एक महत्वपूर्ण बिंदु)।

+0

क्या आप इस बारे में कुछ कहेंगे कि एक व्यक्ति दो तरीकों के बीच कैसे चयन करेगा? या यह इतना आसान बनाम इतना आसान नहीं है? –

+0

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

0

एक अनुमान (untested) पर:

Process.Start("shutdown", "-s -t 0"); 
1

here से पता चला "उपयोगकर्ता logoff" कोड की भिन्नता का प्रयोग करें।

वह कोड ExitWindowsEx API कॉल का उपयोग करता है।

0

मुश्किल तरीके से, पूरी तरह से लैपटॉप पर काम करता है, हालांकि यह कुछ समय लगता है:

Spawn a couple endless loops in more threads than cpu cores. 
Wait for overheat which will automatically shutdown a computer. 

:)

+0

इतने सारे डाउनवोट्स! क्या यह सिर्फ मुझे जवाब देने वाला जवाब मिला? – Marcel

+0

मनोरंजक, तो +1। याद रखें: सभी काम और कोई नाटक जैक को एक सुस्त लड़का बनाता है .. –

5

विभिन्न तरीकों:

ए System.Diagnostics.Process.Start (" शट डाउन "," -एस -टी 10 ");

बी Windows मैनेजमेंट इंस्ट्रूमेंटेशन (WMI)

http://www.csharpfriends.com/Forums/ShowPost.aspx?PostID=36953

http://www.dreamincode.net/forums/showtopic33948.htm

सी System.Runtime.InteropServices PInvoke

http://bytes.com/groups/net-c/251367-shutdown-my-computer-using-c

डी सिस्टम प्रबंधन

http://www.geekpedia.com/code36_Shut-down-system-using-Csharp.html

मैं सबमिट करने के बाद, मैंने देखा है तो कई अन्य लोगों के भी पोस्ट किया है ...

+0

विकल्प और लिंक के लिए +1 –

+0

हालांकि यह कह रहा है कि मैं अभी भी सोच रहा हूं - जब कोई व्यक्ति पहले विकल्प का उपयोग नहीं करेगा? –

+0

मुझे यकीन नहीं है कि कोई शटडाउन.एक्सई के निष्पादन के लिए अधिकार अक्षम कर सकता है, उस स्थिति में, किसी को निष्पादित करने के लिए कोड की आवश्यकता हो सकती है ... – lakshmanaraj

3

WindowsController ExitWindowsEx के चारों ओर एक सी # आवरण वर्ग है।

कभी-कभी आप अपने अनुप्रयोगों से ऑपरेटिंग सिस्टम को पुनः आरंभ करने या बंद (उदाहरण के लिए, एक कार्यक्रम की स्थापना के बाद) की जरूरत है। .NET फ़्रेमवर्क तथापि, वहाँ उनके कार्यान्वयन में कुछ समस्या होने लगते हैं आप एक अप्रत्यक्ष रास्ता System.Management नाम स्थान में Windows मैनेजमेंट इंस्ट्रूमेंटेशन (WMI) कक्षाओं के माध्यम से कंप्यूटर को पुनः आरंभ करने के लिए प्रदान करता है।

यही कारण है कि हम WindowsController वर्ग कि पुनः आरंभ और शट डाउन Windows के लिए कुछ एपीआई कार्यों को लागू करता है बनाया है। यह सभी ExitWindowsEx मोड का समर्थन करता है और यह सिस्टम को हाइबरनेट और निलंबित भी कर सकता है।

यह कक्षा सी # और वीबी.NET संस्करण में उपलब्ध है। इसे को .NET मॉड्यूल या किसी पुस्तकालय में अन्य .NET भाषाओं से उपयोग किया जा सकता है। चूंकि यह विंडोज एपीआई पर निर्भर करता है, यह लिनक्स या फ्रीबीएसडी पर काम नहीं करेगा।

(mentalis.org)

0

तुम भी

http://www.pinvoke.net/default.aspx/advapi32.initiatesystemshutdown

using System; 
using System.Runtime.InteropServices; 
using System.Text; 

public class Program 
{ 
    [DllImport("advapi32.dll") ] 
    public static extern bool InitiateSystemShutdown(string MachineName , string Message , uint Timeout , bool AppsClosed , bool Restart); 

    [DllImport("kernel32.dll") ] 
    public static extern uint GetLastError(); 

    [DllImport("kernel32.dll") ] 
    public static extern uint FormatMessage(uint Flags , IntPtr Source , uint MessageID , uint LanguageID , StringBuilder Buffer , uint Size , IntPtr Args); 



    public static void Main() 
    { 
     InitiateSystemShutdown(System.Environment.MachineName, "hello", 0, false, false); 
     //InitiateSystemShutdown("localhost", "hello", 0, false, false); 

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