Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में विंडोज कमांड प्रॉम्प्ट का उपयोग करके विंडोज सर्विस कैसे इंस्टॉल करें? C# में विंडोज कमांड प्रॉम्प्ट का उपयोग करके विंडोज सर्विस कैसे इंस्टॉल करें?

विंडोज सर्विस एप्लिकेशन बनाने और इसे कमांड प्रॉम्प्ट के माध्यम से इंस्टॉल करने की चरण-दर-चरण प्रक्रिया।

चरण 1: विंडोज सर्विस प्रोजेक्ट बनाएं

  1. Visual Studio खोलें
  2. नया प्रोजेक्ट बनाएं → "Windows Service" टेम्पलेट चुनें
  3. प्रोजेक्ट नाम दें (उदाहरण: DemoWindowsService)

चरण 2: इंस्टॉलर जोड़ें

  1. Solution Explorer में Service1.cs पर राइट-क्लिक करें → View Designer
  2. डिजाइनर सतह पर राइट-क्लिक करें → Add Installer
  3. यह ProjectInstaller.cs फाइल जोड़ता है जिसमें ServiceProcessInstaller1 और ServiceInstaller1 होते हैं

चरण 3: इंस्टॉलर प्रॉपर्टीज कॉन्फिगर करें

// ProjectInstaller.cs - InitializeComponent में (या डिजाइनर के माध्यम से प्रॉपर्टीज सेट करें)
private void InitializeComponent()
{
    this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
    this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
    
    // ServiceProcessInstaller - सर्विस किस अकाउंट के तहत चलती है
    this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
    // अन्य विकल्प: LocalService, NetworkService, User (यूजरनेम/पासवर्ड की आवश्यकता)
    
    // ServiceInstaller - सर्विस मेटाडेटा
    this.serviceInstaller1.ServiceName = "DemoService";           // सर्विस नाम (यूनिक)
    this.serviceInstaller1.DisplayName = "Demo Windows Service";  // सर्विसेज MMC में दिखने वाला नाम
    this.serviceInstaller1.Description = "मेरा डेमो विंडोज सर्विस"; // विवरण
    this.serviceInstaller1.StartType = ServiceStartMode.Automatic; // ऑटोमेटिक स्टार्ट
    
    this.Installers.AddRange(new System.Configuration.Install.Installer[] 
    {
        this.serviceProcessInstaller1,
        this.serviceInstaller1
    });
}

चरण 4: सर्विस लॉजिक इम्प्लीमेंट करें

using System;
using System.IO;
using System.ServiceProcess;
using System.Timers;

namespace DemoWindowsService
{
    public partial class Service1 : ServiceBase
    {
        private Timer _timer;
        private string _logPath = @"D:\Demo\Log.txt";
        
        public Service1()
        {
            InitializeComponent();
        }
        
        protected override void OnStart(string[] args)
        {
            WriteToFile("सर्विस शुरू हुई: " + DateTime.Now);
            
            _timer = new Timer(5000); // 5 सेकंड
            _timer.Elapsed += OnElapsedTime;
            _timer.Enabled = true;
        }
        
        protected override void OnStop()
        {
            WriteToFile("सर्विस रोकी गई: " + DateTime.Now);
            _timer?.Dispose();
        }
        
        private void OnElapsedTime(object sender, ElapsedEventArgs e)
        {
            WriteToFile("सर्विस रिकॉल: " + DateTime.Now);
        }
        
        private void WriteToFile(string message)
        {
            try
            {
                string dir = Path.GetDirectoryName(_logPath);
                if (!Directory.Exists(dir))
                    Directory.CreateDirectory(dir);
                
                File.AppendAllText(_logPath, message + Environment.NewLine);
            }
            catch (Exception ex)
            {
                // इवेंट लॉग में लिखें अगर फाइल लिखना विफल हो
                EventLog.WriteEntry("DemoService", ex.Message, EventLogEntryType.Error);
            }
        }
    }
}

चरण 5: कमांड प्रॉम्प्ट से इंस्टॉल करें

1. डेवलपर कमांड प्रॉम्प्ट एडमिनिस्ट्रेटर के रूप में खोलें

Windows Key → "Developer Command Prompt" → राइट-क्लिक → "Run as Administrator"

2. .NET Framework इंस्टॉल यूटिलिटी डायरेक्टरी में नेविगेट करें

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319

नोट: .NET Core/.NET 5+ के लिए, dotnet tool install --global dotnet-svcutil या सीधे sc.exe का उपयोग करें।

3. InstallUtil का उपयोग करके सर्विस इंस्टॉल करें

InstallUtil.exe "C:\Full\Path\To\DemoWindowsService\bin\Debug\DemoWindowsService.exe"

4. सर्विस अनइंस्टॉल करने के लिए

InstallUtil.exe /u "C:\Full\Path\To\DemoWindowsService\bin\Debug\DemoWindowsService.exe"

आधुनिक विकल्प: .NET Core / .NET 5+ के लिए

sc.exe का उपयोग करके (विंडोज बिल्ट-इन)

REM सर्विस बनाएं
sc.exe create "DemoService" binPath= "C:\Full\Path\DemoWindowsService.exe" start= auto DisplayName= "Demo Windows Service"

REM सर्विस शुरू करें
sc.exe start "DemoService"

REM सर्विस रोकें
sc.exe stop "DemoService"

REM सर्विस हटाएं
sc.exe delete "DemoService"

.NET Core Worker Service के रूप में (अनुशंसित आधुनिक दृष्टिकोण)

// Program.cs (.NET 6+)
using Microsoft.Extensions.Hosting;

var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddWindowsService(); // विंडोज सर्विस सपोर्ट
builder.Services.AddHostedService();

var host = builder.Build();
host.Run();
// Worker.cs
public class Worker : BackgroundService
{
    private readonly ILogger _logger;
    
    public Worker(ILogger logger) => _logger = logger;
    
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            _logger.LogInformation("Worker चल रहा है: {time}", DateTimeOffset.Now);
            await Task.Delay(5000, stoppingToken);
        }
    }
}

सर्विस मैनेजमेंट कमांड्स

net start "DemoService" या sc start "DemoService"net stop "DemoService" या sc stop "DemoService"sc pause "DemoService"sc continue "DemoService"sc query "DemoService"sc config "DemoService" start= demand (manual) / auto / disabled
एक्शनकमांड
शुरू करें
रोकें
पॉज करें
जारी रखें
स्टेटस चेक करें
स्टार्टअप टाइप बदलें

समस्या निवारण

  • Access Denied: एडमिनिस्ट्रेटर के रूप में कमांड प्रॉम्प्ट चलाएं
  • Service not found: सही पथ और सर्विस नाम जांचें
  • Log on failure: ServiceProcessInstaller में अकाउंट जांचें (LocalSystem, NetworkService, या वैध यूजर)
  • Dependencies: ServiceInstaller.ServicesDependedOn का उपयोग करके डिपेंडेंसीज सेट करें

नोट: आधुनिक .NET एप्लिकेशन्स के लिए, लिगेसी Windows Service टेम्पलेट के बजाय Microsoft.Extensions.Hosting.WindowsServices के साथ Worker Service टेम्पलेट का उपयोग करने पर विचार करें।

  1. VirtualBox के साथ विंडोज 10 पर Ubuntu इंस्टॉल करें: चरण-दर-चरण गाइड VirtualBox के साथ विंडोज 10 पर Ubuntu इंस्टॉल करें: चरण-दर-चरण गाइड

    यदि आप विंडोज पर काम करते हैं और सिस्टम स्विच किए बिना Ubuntu का उपयोग करना चाहते हैं तो यह किया जा सकता है। आपको बस विंडोज पर Ubuntu इंस्टॉल करने की आवश्यकता है। OS के बारे में अच्छी बात यह है कि यह जब पूछा जाए तभी चलेगा और इसके लिए आपकी डिस्क के किसी विशेष पार्टीशनिंग की आवश्यकता नहीं है। इस पोस्ट

  1. Windows 10 कमांड प्रॉम्प्ट में कॉपी और पेस्ट करना सीखें Windows 10 कमांड प्रॉम्प्ट में कॉपी और पेस्ट करना सीखें

    कमांड प्रॉम्प्ट Windows ऑपरेटिंग सिस्टम में सबसे शक्तिशाली टूल में से एक है। हालांकि, Windows GUI जो नहीं कर सकता उसे हासिल करने में सक्षम होने के बावजूद, कमांड प्रॉम्प्ट में टूल के भीतर कॉपी और पेस्ट करने में हमेशा समस्या होती है। उपयोगकर्ताओं के लिए इसे आसान बनाने के लिए, यह गाइड बताएगा कि कमांड प

  1. विंडोज 10 कमांड प्रॉम्प्ट में डायरेक्टरी नेविगेशन में मास्टर करें विंडोज 10 कमांड प्रॉम्प्ट में डायरेक्टरी नेविगेशन में मास्टर करें

    कमांड प्रॉम्प्ट विंडोज की अविश्वसनीय उपयोगिताओं में से एक है जो उपयोगकर्ताओं को कई कमांड चलाने और विभिन्न त्रुटियों का निवारण करने की अनुमति देता है। इसे माइक्रोसॉफ्ट उपयोगकर्ता समुदाय में आमतौर पर CMD टूल के रूप में जाना जाता है। टेक्स्ट-आधारित उपयोगकर्ता इंटरफ़ेस का उपयोग करके उन्नत प्रशासनिक कार्