Sc qc ব্যবহার না করে আমি কীভাবে উইন্ডোজ সার্ভিস এক্সিকিউটেবলের পথ পেতে পারি?


15

কমান্ড প্রম্পটের মাধ্যমে এটি কার্যকর করার যোগ্য উইন্ডোজ পরিষেবাটির জন্য আমার জিজ্ঞাসা করতে হবে। আমি মনে করি আমি চাই এই কাজ হল: sc qc myServiceNameকিন্তু যখন আমি যে কি, আমি নিম্নলিখিত ত্রুটির পাবেন:

[এসসি] কোয়েরি সার্ভিস কনফিগ 122:

একটি সিস্টেমে কল করা ডেটা অঞ্চলটি খুব ছোট।

[এসসি] গেটস সার্ভিস কনফিগের 1094 বাইট দরকার

আমি মনে করি এর অর্থ হ'ল sc কমান্ডটি অন্য কোনও লাইব্রেরিতে একটি ডেটা স্ট্রাকচার প্রেরণ করছে যা যে ডেটা ফেরানোর প্রয়োজন তা খুব ছোট too এসসি পরিবর্তে বৃহত্তর ডেটা স্ট্রাকচার (1094 বাইট) দিয়ে সুন্দরভাবে চেষ্টা করার পরিবর্তে এটি বোমা ফাটিয়ে দেয় এবং আমাকে এই কুৎসিত ত্রুটির বার্তা দেয়। ধন্যবাদ মাইক্রো t অফ।

তাহলে কি এই ত্রুটিটি ঘিরে কাজ করার কোনও উপায় আছে? আমার কেবল এক্সিকিউটেবলের পথ প্রয়োজন, তবে প্রয়োজনে এটি অন্য কোনও পাঠ্য থেকে বের করে দেব।

উত্তর:


20

এক্সিকিউটেবলের পথ খুব দীর্ঘ ছিল এমন কোনও পরিষেবার বিশদ পাওয়ার চেষ্টা করার সময়ও আমি এই সমস্যার মুখোমুখি হয়েছিলাম। এই আলোচনায় একটি কার্যনির্বাহী উপাদান রয়েছে; আপনি একটি বাফার আকারটি যুক্তি হিসাবে পাস করতে পারেন sc qc। এটি হল, যদি আপনি:

sc qc <service name> 5000

"একটি সিস্টেমে কল করা ডেটা অঞ্চল খুব ছোট" ত্রুটি চলে যায়।


আরো দেখুন এসসি কুইবেক দুটিই MSDN পৃষ্ঠা:

sc [<ServerName>] qc [<ServiceName>] [<BufferSize>]

কোথায়:

<BufferSize> বাফারের আকার (বাইটে) নির্দিষ্ট করে। ডিফল্ট বাফার আকারটি 1,024 বাইট।


2
এফওয়াইআই, 2^13 = 8192বাফার আকারের সর্বাধিক মান।
নেব্ফা

sc queryex type= service state= all | find /i "myServiceNameসমস্ত পরিষেবা তালিকাভুক্ত করে তবে দুর্ভাগ্যক্রমে কোনও পথ নেই।
শায়ান

13

আমি একটি কার্যক্ষম সমাধান খুঁজে পেয়েছি:

reg query "HKLM\System\CurrentControlSet\Services\<serviceName>" /v "ImagePath"

অবশ্যই এর কিছু পার্সিং দরকার, তবে এটি আমাকে পুরো পথ দেয় যা পরিষেবাদি.এমএসসি ডায়ালগ বক্স সরবরাহ করে।


10

আপনি পাওয়ারশেলের মাধ্যমে ডাব্লুএমআই ক্যোয়ারির সাহায্যে এটি করতে পারেন:

$service = get-wmiobject -query 'select * from win32_service where name="winrm"'; echo $service.pathname

পরিষেবাদি.এমএসসি তে প্রদর্শিত বিকল্পগুলি সহ এটি আপনাকে পুরো পথ দেবে। winrmআপনি যে পরিষেবাটি অনুসন্ধান করতে চান তার সাথে কেবল আমার উদাহরণে প্রতিস্থাপন করুন ।

উপরোক্ত প্রশ্নের জন্য winrmআউটপুট করা উচিতC:\Windows\System32\svchost.exe -k NetworkService


দুর্ভাগ্যক্রমে, আমি পাওয়ারশেলের উপর নির্ভর করতে পারি না কারণ এক্সপি এর ডিফল্টরূপে থাকে না। এক্সপি, সার্ভার ২০০৮ এবং, এর জন্য আমার কোনও অতিরিক্ত সফ্টওয়্যার ইনস্টল না করে সমর্থন দরকার।
জেয়ার্ড

@ জারেড এটি খুব খারাপ। আপনি একগুচ্ছ রিমোট মেশিনের বিরুদ্ধে কোনও একক যন্ত্র থেকে এটি চালাতে পারছেন না?
MDMarra

না এটি কোনও অ্যাপ্লিকেশনের জন্য আনইনস্টলারের কাছে যেতে আসলে কিছুটা স্ক্রিপ্ট। আমি একটি সমাধান খুঁজে পেয়েছি যা কাজ করে এবং এর জন্য একটি উত্তর যুক্ত করে।
জেরেড

4

wmicকমান্ড লাইন ইউটিলিটি ব্যবহার করে এটি ব্যবহার করে দেখুন । এখানে আমার মেশিনে পরিষেবাটির একটি উদাহরণ রয়েছে CrashPlanService

C:\Users\Ben>wmic service CrashPlanService get PathName

PathName
"C:\Program Files\CrashPlan\CrashPlanService.exe"

মূলত wmic service <<YourService>> get PathName,।


1
বেশ কাজ করে না। তবে, অন্যদিকে, এটি কাজ করে: "
ডাব্লুমিক

@ জাজানফান আপনি কী আউটপুট পাবেন এবং কোন পরিষেবাটি দিয়ে? হতে পারে আপনি একটি ভিন্ন সংস্করণ পেয়েছেন wmic(আমি উইন্ডোজ 7 এসপি 1 এ আছি)?
বেন পিলব্রো

@ বেন পিলব্রো যা আমার পক্ষে কাজ করে নি। ডাব্লুএমসি পথের নাম পাচ্ছে না (কেবলমাত্র "প্যাথনাম" নিম্নলিখিত লাইনে কিছুই না দিয়ে) এটি নিশ্চিত কিনা তা নিশ্চিত নয় কারণ এটিকে অনেক দীর্ঘ করে দেওয়ার পথে অনেকগুলি পরামিতি এমবেড করা রয়েছে।
জারেড

আমার জন্য কাজ করেছে তবে ফলাফলটি আমাকে কিছুটা প্রসেস করতে হয়েছিল: ((ডাব্লামিইসি সার্ভিস এসকিউএল ব্রাউজার পাথনাম পান) -ম্যাচ " "")[0].replace("" "," ")
কেটবিতে

wmic serviceদুর্দান্ত কাজ করে সমস্ত রাস্তা দিয়ে তাদের পরিষেবাগুলি তালিকাভুক্ত করে।
শায়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.