কীভাবে উইন্ডোজ পরিষেবায় নির্ভরতা যুক্ত করতে হবে পরিষেবাটি ইনস্টল হওয়ার পরে


133

আমার কাছে একটি উইন্ডোজ পরিষেবা রয়েছে যা একটি এসকিউএল সার্ভার ডাটাবেস ব্যবহার করে। পরিষেবাটি ইনস্টল করার উপর আমার কোনও নিয়ন্ত্রণ নেই, তবে এসকিউএল সার্ভার শুরু হওয়ার পরে এটি শুরু হয় তা নিশ্চিত করার জন্য পরিষেবার উপর নির্ভরতা যুক্ত করতে চাই। (এসকিউএল সার্ভার একই মেশিনে প্রশ্নযুক্ত পরিষেবা হিসাবে চলছে)

কোনও নির্ভরতা যুক্ত করার বা সম্ভবত সরাসরি রেজিস্ট্রি সম্পাদনা করার কোনও সরঞ্জাম আছে?

উত্তর:


199

এটি কমান্ডটি ব্যবহার করে একটি উন্নত কমান্ড প্রম্পটের মাধ্যমেও করা যেতে পারে sc। বাক্য গঠনটি হ'ল:

sc config [service name] depend= <Dependencies(separated by / (forward slash))>

উল্লেখ্য : একটি স্থান নেই পর সমান সাইন ইন করেন, আরো একীন করে নাও না এটা আগে এক।

সতর্কতা : depend=প্যারামিটার বিদ্যমান নির্ভরতা তালিকাটি ওভাররাইট করবে , সংযোজন নয়। সুতরাং উদাহরণস্বরূপ, যদি সার্ভিস ইতিমধ্যে সার্ভিসবি এবং সার্ভিসসি-র উপর নির্ভর করে, আপনি চালনা করেন depend= ServiceD, সার্ভিসএ এখন কেবল সার্ভিডের উপর নির্ভর করবে । (ধন্যবাদ ম্যাট !)

উদাহরণ

অন্য একটি পরিষেবা নির্ভরতা:

sc config ServiceA depend= ServiceB

উপরের অর্থ সার্ভিসবি চালু না হওয়া পর্যন্ত সার্ভিসএ শুরু হবে না। আপনি সার্ভিস বন্ধ করলে সার্ভিসএ স্বয়ংক্রিয়ভাবে থামবে।

একাধিক অন্যান্য পরিষেবার উপর নির্ভরতা:

sc config ServiceA depend= ServiceB/ServiceC/ServiceD/"Service Name With Spaces"

উপরের অর্থ সার্ভিসবি, সার্ভিসসি, এবং সার্ভিসডি সব শুরু না হওয়া পর্যন্ত সার্ভিসএ শুরু হবে না। আপনি সার্ভিস বি, সার্ভিসসি, বা সার্ভিসডি কোনও বন্ধ করলে সার্ভিসএ স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।

সমস্ত নির্ভরতা অপসারণ করতে:

sc config ServiceA depend= /

বর্তমান নির্ভরতা তালিকাবদ্ধ করতে:

sc qc ServiceA

5
আপনি কিপ এর পদ্ধতিতে পরিবর্তন করার আগে বিদ্যমান নির্ভরশীলতাগুলি দেখতে চান, আপনি sc qc আপনার সার্ভিসনাম টাইপ করতে পারেন
mivk

1
একটু সাবধানতা অবলম্বন করুন ... আমি এটি ব্যবহার করেছি এবং বুঝতে পারি নি যে এটি বিদ্যমান নির্ভরতাগুলি ওভাররাইট করবে .. আমার সেবার জন্য দু'টি ছিল যা আমার মনে নেই .. এখন তারা চলে গেছে .. ওহ ভাল! সুতরাং নিশ্চিত হয়ে নিন যে আপনি প্রথমে অন্য কোনও নির্ভরতা দেখতে প্রথমে @mivk উল্লিখিত কমান্ডটি চালিয়েছেন।
ম্যাট

1
আপনি বর্তমানে সার্ভিসের জন্য কনফিগার করা নির্ভরতার জন্য sc qc [service name]কমান্ডটি ব্যবহার করতে পারেন
জেরিটান

4
যদি আমার মতো হয় তবে আপনার পরিষেবার নামে ফাঁকা স্থান রয়েছে, এটিকে উদ্ধৃতিতে আবদ্ধ করুন।
লাজ্লো

6
পাওয়ারশেল ব্যবহার করে, নিশ্চিত হয়ে নিন যে আপনি sc.exeঅন্যথায় ব্যবহার করেছেন তবে আপনি ত্রুটি পেয়ে যাবেন: 'একটি অবস্থানগত পরামিতি খুঁজে পাওয়া যায় না যা যুক্তি গ্রহণ করে'
স্পুডার

42

regeditকমান্ডটি ব্যবহার করে রেজিস্ট্রিতে পরিষেবাটিতে "DependOnService" মান যুক্ত করে আপনি পরিষেবা নির্ভরতা যুক্ত করতে পারেন, পরিষেবাগুলি এর অধীনে পাওয়া যাবে HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<Service name>। বিশদটি এমএস কেবি নিবন্ধ ১৯৩৮৮৮ তে পাওয়া যাবে , যেখান থেকে নীচের একটি উদ্ধৃতি:

একটি নতুন নির্ভরতা তৈরি করতে, আপনি বিলম্ব করতে চান সেবার প্রতিনিধিত্বকারী সাবকি নির্বাচন করুন, সম্পাদনা ক্লিক করুন, এবং তারপরে মান যুক্ত করুন ক্লিক করুন। REG_MULTI_SZ এর ডেটা ধরণের সাহায্যে একটি নতুন মান নাম "DependOnService" (উদ্ধৃতি চিহ্ন ছাড়া) তৈরি করুন এবং তারপরে ওকে ক্লিক করুন। ডেটা ডায়ালগ বাক্সটি উপস্থিত হওয়ার পরে, প্রতিটি লাইনের জন্য একটি এন্ট্রি দিয়ে এই পরিষেবাটির আগে আপনি যে পরিষেবাগুলির শুরু করতে পছন্দ করেন সেগুলির নাম বা নাম টাইপ করুন এবং তারপরে ওকে ক্লিক করুন।


7
পবিত্র গরু! এটিই আমি পেয়েছি দ্রুততম উত্তর। আমি সবে সবে হোম পেজে ফিরে এসেছি।
রিক

2

আমি একটি নিখুঁতভাবে পাওয়ারশেল (কোনও রেজিডিট বা sc.exe) পদ্ধতির সন্ধান করছিলাম যা ২০০৮ আরআর / উইন and এবং আরও নতুনতে কাজ করতে পারে এবং এটি নিয়ে এসেছিল:

পাওয়ারশেলের সাহায্যে নতুন করে কাজ করা সহজ:

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation' -Name DependOnService -Value @('Bowser','MRxSmb20','NSI')

বা, ডাব্লুএমআই ব্যবহার করে:

$DependsOn = @('Bowser','MRxSmb20','NSI','') #keep the empty array element at end
$svc = Get-WmiObject win32_Service -filter "Name='LanmanWorkstation'"
$svc.Change($null,$null,$null,$null,$null,$null,$null,$null,$null,$null,$DependsOn)

পরিবর্তন Win32_Service ক্লাসের পদ্ধতি একটি সমাধান বিন্দু সাহায্য সহায়তা দিয়েছে,

uint32 Change(
[in] string  DisplayName,
[in] string  PathName,
[in] uint32  ServiceType,
[in] uint32  ErrorControl,
[in] string  StartMode,
[in] boolean DesktopInteract,
[in] string  StartName,
[in] string  StartPassword,
[in] string  LoadOrderGroup,
[in] string  LoadOrderGroupDependencies[],
[in] string  ServiceDependencies[]
);

1

আপনি যদি আগ্রহী হন তবে আমি পরিষেবা নির্ভরতা পরিচালনার জন্য একটি সহজ। নেট অ্যাপ্লিকেশন লিখেছি। এটা বিনামূল্যে.

http://webpages.charter.net/bushman4/servicedependencymanager.html


1
এটি আমাকে বলছে যে আমার দরকার। নেট 1.1 তবে আমি উইন্ডোজ 7 চালাচ্ছি
নিক

1
। নেট 1.1 উইন্ডোজ ইনস্টল করা প্রয়োজন 7. এই প্রশ্নের উত্তর দেখুন: જવાি.মাইক্রোসফট
গ্লেন সুলিভান

9
সত্যই, 2014 সালে আপনি কেবল 4.0 এর জন্য পুনরায় সংশোধন করার পরিবর্তে উইন 7 এ। নেট 1.1 ইনস্টল করার পরামর্শ দিয়েছিলেন? ধন্যবাদ, না।
এন্ডারজু

0

সি ++ (এটিএল) এ আমি এটি পছন্দ করেছিলাম

bool ModifyDependOnService(void)
{
  CRegKey R;
  if (ERROR_SUCCESS == R.Open(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\services\\MyService"))
  {
    bool depIsThere = false;

    // determine if otherservice is installed, if yes, then add to dependency list.
    SC_HANDLE hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
    if (hSCManager)
    {
      SC_HANDLE hService = OpenService(hSCManager, L"OtherService", SERVICE_QUERY_STATUS);
      if (hService)
      {
        depIsThere = true;
        CloseServiceHandle(hService);
      }
      CloseServiceHandle(hSCManager);
    }

    std::wstring key = L"DependOnService";
    if (depIsThere )
    {
      const wchar_t deps[] = L"RPCSS\0OtherService\0";
      R.SetValue(key.c_str(), REG_MULTI_SZ, deps, sizeof(deps));
    }

    R.Close();
    return true;
  }
  return false;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.