PDA

View Full Version : حرفه ای: کار با سرویس های ویندوز از قبیل Telnet یا Remote



khafan_bat
شنبه 28 شهریور 1388, 03:44 صبح
سلام به تمامی اساتید و بزرگان

-> نوع تاپیک رو حرفه ای انتخاب کردم چون با گشتی که من تو وبسایت های انگلیسی و فارسی زدم راهی رو برای حل مشکل خودم پیدا نکردم.

-> یک هفته پیش این سوال رو مطرح کردم ، دوستی پاسخ خیلی خلاصه داد. احساس کردم کارم راه افتاد ولی نیفتاد..!! :


http://barnamenevis.org/forum/showthread.php?t=179277


-> در صورت امکان پاسخ ها با مثال + سورس باشد. فدای همه شما فانوس داران علم برنامه نویسی ایران

تشریح کامل سوال:


دوستان مطمئنا با سرویس های ویندوز آشنایی کافی دارند. برای مثال: Help ویندوز که با زدن کلید F1 فعال میشه یا Windows Audio که امکان پخش فایل های صوتی رو فراهم میکنه . یا themes که اگه با مشکل بر بخوره XP مثله ویندوز 98 میشه.


مهمترین سرویس های ویندوز که به صورت پیش فرض با روشن شدن کامپیوتر اجرا می شوند:

به منوی start رفته و روی آیکون Run کلیک میکنیم. msconfig را در کادر نوشته و ok میکنیم.

در پنجره ی باز شده ی System Configuration Utility وارد برگه ی Services می شویم. این لیست مربوط به سرویس هایی است که بصورت اتوماتیک اجرا می شوند. ( شکل زیر )


http://h.imagehost.org/0960/2_15.jpg


همانطور که میدانید سرویس های ویندوز به این لیست خلاصه نمیشوند . برای دیدن تمامی سرویس های ویندوز باید به کنترل پنل و سپس Administrator tools و Services را کلیک کنیم. پنجره ای مثل پنجره ی زیر باز میشود. البته از طریق راست کلیک کردن روی My computer و سپس manage و بعد Services هم میشه رفت. مثه شکل پایین.



http://h.imagehost.org/0082/a.jpg



یکسری از این سرویس ها خیلی کاربردی اما در بعضی مواقع خطرناک و نا امن هستند مثل سرویس telnet یا Remote Desktop . سرویس های نامبرده در حالت پیش فرض Disable یا Manual هستند.

سرویس هایی رو که در حالت Manual یا Automatic هستند میتوان توسط دستورات داس ، Start یا Stop کرد. فرم دستور بدین شکل است:


"net start "Service name


مثال: منوی start را باز میکنیم و سپس کلید f1 میزنیم. Help ویندوز باز میشود. حالا میخوایم این سرویس رو از طریق داس متوقف کنیم. مطابق شکل زیر عمل میکنیم.


http://h.imagehost.org/0064/1_47.jpg



حالا باز برید روی منوی start و F1 رو بزنید. میبینید که دیگه Help ویندوز بالا نمیاد ( البته به شرطی که کار تا اینجا درست انجام شده باشه)
اگه این کار رو برای سرویس themes انجام بدیم. theme ایکس پی میپره و با دستور start دوباره میشه بالا اوردش

همین کار رو میتونیم در ویبی با دستور Shell انجام بدیم. این هم Ok

اما تکلیف سرویس هایی که Disable هستند چه میشود؟؟؟ فرض کنیم میخوایم Telnet رو فعال کنیم . چی کار باید کنیم؟ با این دستور ها که کار ما را نمیفته..!!

راه حلی که خودم پیدا کردم کار با رجیستری هست. اما نکته اینجاست تا سیستم رستارت نشه کار ردیف نمیشه ، این هم دستورات یک batch file که تنظیمات دستی رو یکجا اتومات میکنه :

http://h.imagehost.org/0671/t.jpg



من میخوام در ویژال بیسیک 6 توسط هر چیزی که به ذهن شما میرسه سرویس های Disable را Automatic یا Manual کنم. بقیه کار دیگه با خودم. دم تک تک شما خوانندگان و رانندگان و برنامه رانان و.... گرم از نوع 100 درجه ی سانتیگراد


مرتبط با این موضوع در وی بی دات نت:


http://bytes.com/topic/visual-basic-net/answers/351404-status-windows-services

http://www.dreamincode.net/code/snippet2025.htm

ttp://barnamenevis.org/forum/showthread.php?t=179277




بلاگ من: www.innovation.iranblog.com (http://barnamenevis.org/forum/www.innovation.iranblog.com)


http://a.imagehost.org/0721/k_9.jpg

khafan_bat
شنبه 28 شهریور 1388, 13:53 عصر
کسی جواب مارو نمیده >؟؟؟؟

AmirAmiri
یک شنبه 29 شهریور 1388, 03:48 صبح
سلام دوست عزیز اتفاقا من همون موقع که پست قبلی رو دادی میخواستم جابت رو بدم ولی دیدم که تشکر کردی و گفتی که کارت راه افتاده واسه همینم پست ندادم.
ببین دوست عزیز، اول اینکه برای اینکار یه تابع API وجود داره که متاسفانه الان حضور ذهن نارم پس پیشنهاد میکنم از دستور SC در داس استفاده کنی.
برای ساختن یک سرویس جدید :

sc [ServerName] create [ServiceName] [type= {own|share|kernel|filesys|rec|adapt|interact type= {own|share}}] [start= {boot|system|auto|demand|disabled}] [error= {normal|severe|critical|ignore}] [binpath= BinaryPathName] [group= LoadOrderGroup] [tag= {yes|no}] [depend= dependencies] [obj= {AccountName|ObjectName}] [displayname= DisplayName] [password= Password]



برای شروع یک سرویس غیر فعال :

sc [ServerName] start ServiceName [ServiceArguments]



برای فعال کردن سرویس در زمان startup :

sc [ServerName] config [ServiceName] [type= {own|share|kernel|filesys|rec|adapt|interact type= {own|share}}] [start= {boot|system|auto|demand|disabled}] [error= {normal|severe|critical|ignore}] [binpath= BinaryPathName] [group= LoadOrderGroup] [tag= {yes|no}] [depend= dependencies] [obj= {AccountName|ObjectName}] [displayname= DisplayName] [password= Password]



که در اینجا باید start رو برابر با auto قرار بدی.
منبع : Windows Help and suport
دستور SC رو تو Help ویندوز جستجو کن، مطالب خوبی گیرت میاد.

AmirAmiri
یک شنبه 29 شهریور 1388, 03:54 صبح
آها راستی مثال یادم رفت.
فعال کردن سرویس Themes :

SC Start Themes

غیر فعال کردن سرویس Themes :

SC Stop Themes

برای فعال کردن سرویسهای غیر فعال دیگه هم کافیه نامشون رو جلوی start بنویسی.
برای بدست آوردن لیست سرویس ها و نام سرویس میتونی از دستور :

SC Query
استفاده کنی
اگه میخوای فقط اونایی رو که غیر فعال هستن ببینی :

SC Query State= inactive

شکل کلی query :

sc [ServerName] query [ServiceName] [type= {driver|service|all}] [type= {own|share|interact|kernel|filesys|rec|adapt}] [state= {active|inactive|all}] [bufsize= BufferSize] [ri= ResumeIndex] [group= GroupName]


بازم اگه کارت راه نیفتادش بگو تا بیشتر بررسی کنیم.

موفق و پیروز باشی...

khafan_bat
دوشنبه 30 شهریور 1388, 03:39 صبح
سلام . جدا متشکرم که با گذاشتن وقتت پاسخ سوال مارو میدی
اگه بدونی بعد کنکور پشت سیستم نشستن چه حالی میده... با این دستور یه بار برخورد کرده بودم ولی نیمه شب بود دیگه سیستم کشش نداشت. سیستم خودم رو میگم (مغز)

با این حال موفق شدم. البته به همراه شما.
باید نام اصلی سرویس ها رو از اون آدرسی که رفیق قبلی در اون یکی پست معرفی کرده بودن بزاریم. برای مثال در جدول سرویس ها داریم Telnet اما نام رجیستر شده ی این سرویس برای ویندوز هست TlntSVR


http://ss64.com/nt/syntax-services.html




http://h.imagehost.org/0614/1_18.png


:تشویق:

pernia
دوشنبه 30 شهریور 1388, 08:58 صبح
اگه سرویس winmgmts از قبل بار شده باشه که پیشفرض همینطور هم هست، ممکنه از این روش هم خوشت بیاد
http://www.pic4ever.com/images/acigar.gif



' Telnet
Set ServiceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_Service where Name='TlntSrv'")
for each Service in ServiceSet
RetVal = Service.StopService()
RetVal = Service.ChangeStartMode("Disabled")
next




نمونه های بیشتر :



' Network DDE DSDM
Set ServiceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_Service where Name='NetDDEdsdm'")
for each Service in ServiceSet
RetVal = Service.StopService()
RetVal = Service.ChangeStartMode("Disabled")
next


' QoS RSVP
Set ServiceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_Service where Name='RSVP'")
for each Service in ServiceSet
RetVal = Service.StopService()
RetVal = Service.ChangeStartMode("Disabled")
next


' Remote Access Connection Manager
Set ServiceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_Service where Name='RasMan'")
for each Service in ServiceSet
RetVal = Service.StopService()
RetVal = Service.ChangeStartMode("Disabled")
next


' Routing and Remote Access
Set ServiceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_Service where Name='RemoteAccess'")
for each Service in ServiceSet
RetVal = Service.StopService()
RetVal = Service.ChangeStartMode("Disabled")
next