புள்ளிவலை

மூளைக்குத் தீனியில்லாத போழ்து
சிறிது மனதுக்கும் ஈயப்படும்.
posts - 23, comments - 60, trackbacks - 0

WMI வழியாக விண்டோஸ் சர்வீசை நீக்க...

installutil.exeயை வைத்துக்கொண்டு விண்டோஸ் சர்வீசை நிறுவுவதும் நீக்குவதும் மிகவும் சுலபம். ஆனால் ஒரு பொதியாக (package) மாற்றியபின் விண்டோஸ் சர்வீசை நிறுவியதும் கணிணியுடன் அப்படியே ஈஷிக்கொண்டு நிற்கும். பொதியை நீக்கினாலும் சர்வீஸ் பட்டியலில் இருந்து விண்டோஸ் சர்வீஸ் நீங்காது. இதனால் என்ன ப்ரச்சனை என்றால் மீண்டும் அதே பொதியை நிறுவமுடியாது. ஏற்கனவே இந்த பெயரில் ஒரு விண்டோஸ் சர்வீஸ் பட்டியலில் இருப்பதால், மீண்டும் நிறுவ முடியாது... installutil வைத்துக்கொண்டு கூட.

இப்படி பட்டியலில் தங்கிவிட்ட விண்டோஸ் சர்வீசின் பெயரை, சர்வீஸ் முகமையில் (Services console) இருந்தே வலதுபக்க க்ளிக் பண்ணி எல்லாம் நீக்க முடியாது. அஞ்சா நெஞ்சராக இருப்பவர்கள் ரெஜிஸ்ட்ரியில் கைவைத்து இதை நீக்கலாம்.

வேறு எப்படியாவது ஒரு வழியில் இந்த பெயரை நீக்கினால்தான் மீண்டும் விண்டோஸ் சர்வீசை நிறுவமுடியும். விண்டோஸ் மேனேஜ்மெண்ட் இன்ஸ்ட்ருமெண்டேஷன் (WMI) வழியாக இதை நீக்கலாம்.

WMI என்பது விண்டோஸ் கணிணியில் இருக்கும் சர்வீஸ், ப்ராசஸ், பிணைய பகிர்வுகள் (network share) போன்றவைகளைக் கையாளுவதற்கான ஒரு இயங்குதள முகமை. SQL query போன்ற ஒரு மொழியினூடாக கணிப்பொறியில் இயங்கிக்கொண்டிருக்கும் இயங்குதளம், வன்பொருள் மற்றும் மென்பொருட்களைப் பற்றிய தகவல்களைப் நிர்வகிக்கலாம். மேற்கண்ட இரண்டு வரிகளையும் படித்து, ஒன்றும் புரியாமல் தலை கிர்ரென்று சுற்றினால் WMI பற்றி விவரமாக அறிய விக்கிபீடியாவிலோ மைக்ரோசாஃப்ட் தளத்திலோ பார்க்கவும்.

டாட்நெட்டில் WMIயுடன் தொடர்புகொள்ள System.Management namespace இதற்காகவே இருக்கிறது. இதைப் பயன்படுத்த, முதலில் System.Management.dllஐ Referencesல் சேர்த்துக்கொள்ளவேண்டும்.

ManagementObjectSearcher என்ற க்ளாசிசை wql queryயுடன் instantitate செய்து, நமக்கு வேண்டிய சர்வீசின் ரெஃபரென்சை ManagementObject ஆப்ஜக்டில் பெற்றுக்கொள்ளலாம். பிறகு இந்த ManagementObject ஆப்ஜக்டின் Delete மெத்தடின் உதவியுடன் இந்த விண்டோஸ் சர்வீசின் பெயரை சர்வீசஸ் பட்டியலில் இருந்து நீக்க விடமுடியும்.

மாதிரி நிரல்துண்டு:

string  strServiceName  "MyService" ;
System.Management.ManagementObjectSearcher services  = new  System.Management.ManagementObjectSearcher( "select * from Win32_Service where Name='"  + strServiceName +  "'" ) ;
foreach
(System.Management.ManagementObject obj  in  services.Get())
{
obj.Delete()
;
}

அதாவது, MyService என்ற விண்டோஸ் சர்வீசை இந்த நிரல்வரிகளைக்கொண்டு சர்வீஸ் பட்டியலில் இருந்து அழித்துவிடலாம்.

select * from Win32_Service என்னும் wql query, கணினியில் இருக்கும் அனைத்து விண்டோஸ் சர்வீஸ்கள் பற்றிய விவரத்தையும் பெறுவதற்கு உபயோகிக்கவேண்டும். இதே போல், விண்டோஸ் ப்ராஸஸ் பற்றிய விவரம் வேண்டுமென்றால், select * from Win32_Process என்ற வினவலைப் பயன்படுத்தலாம். ஓடிக்கொண்டிருக்கும் அனைத்து பயன்பாடு/ப்ராஸஸ் பற்றிய விவரமும் இந்த queryயின் வழியாகப் பெறலாம். கணிப்பொறியில் எந்தெந்த அடைவுகள் (டைரக்டரி) பகிர்ந்து கொள்ளப்பட்டிருக்கிறது என்று அறியவேண்டுமா? select * from Win32_Share என்ற query இதற்குப் பயன்படும். foreach லூப்பினுள் obj["Name"].ToString() பயன்படுத்தி பெயர்களை மட்டும் அறியலாம்.

நம் பணியைச் சுலபமாக்குவதற்கு இன்னும் பல Win32_xxx (service, printer, etc.) க்ளாஸ் லிஸ்ட்கள் இருக்கின்றன. முழு Win32 க்ளாஸ் லிஸ்ட் பட்டியலுக்கும் http://www.it-visions.de/Scripting/WMIReferenz.asp?C_Klassentypen=1 சென்று பார்க்கவும்.

Print | posted on Saturday, October 28, 2006 8:12 PM | Filed Under [ கட்டுமானம் ]

Feedback

Gravatar

# re: WMI வழியாக விண்டோஸ் சர்வீசை நீக்க...

க்ருபா ஷங்கர்,

Better we suggest to use Linux and Mac. Then we recommend you to use link color to black or change the background color. We also request you to remove asp.net button in the footer.

நன்றி
Universal Hacker
1/19/2007 10:27 PM | Coimbatore
Gravatar

# re: WMI வழியாக விண்டோஸ் சர்வீசை நீக்க...

Universal Hacker,

வீட்டில் நான் உபுண்டுதான் அதிகம் பயன்படுத்துகிறேன். ஆனால் Mac கண்ணால் பார்த்தது கூட இல்லை. :-(

background color & link color.... :-( என்னுடைய இன்னொரு வலைப்பதிவைப் பார்த்தால் உங்களுக்கேப் புரியும்: http://www4.brinkster.com/shankarkrupa/blog , எனக்கும் 'பக்க வடிவமைப்பு'க்கும் என்ன தொடர்பு என்று. நான் அதில் மிக, மிக அறிவற்றவன். இது ஒரு திறமூல டெம்ப்ளேட். இதை மாற்றவேண்டும், விரைவில் மாற்ற முயற்சிக்கிறேன்..
Gravatar

# re: WMI வழியாக விண்டோஸ் சர்வீசை நீக்க...

நான் இன்னமும் Linux பக்கமே போனதில்லை. BIOS engineer அதனால் development testing-காக Linux install/boot செய்வதோடு சரி. க்ருபா, உங்கள் நடை மிக அருமை. தமிழில் படிக்க எவ்வளவு நன்றாக உள்ளது
5/12/2007 1:17 PM | சுகுமார்
Gravatar

# re: WMI வழியாக விண்டோஸ் சர்வீசை நீக்க...

மிக்க நன்றி சுகுமார். பாருங்கள், நெடுநாட்களாக என் வலைப்பதிவைப் பார்க்கவே இல்லை. இந்த 'உபுண்டு'வை கட்டிக்கொண்டு அழுதுகொண்டிருந்தேன். நீங்கள் என்னடாவென்றால் அடிக்கடி லினக்சை இன்ஸ்டால் செய்து பூட் செய்வதாகச் சொல்கிறீர்கள். தண்ணிப்பட்டபாடாக இருக்கும் என்று நினைக்கிறேன், உங்களுக்கு அது.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 3 and 8 and type the answer here:

Powered by: