PDA

View Full Version : چگونگی راه اندازی اتوماتیک سرویس که در VC نوشته شده



bigboy_user
یک شنبه 23 دی 1386, 10:32 صبح
سلام
من یه سرویس در VC++6 نوشتم از طریق کد برنامه سرویس را نصب و start میکنم ، منتها وقتی سیستم reset میشود سرویس در حالت start نیست چون در Servic consol مقدار startup سرویس من برابر manual است، حالا من میخوام از طریق برنامه نویسی مقدار startup سرویسم را برابر Automatic کنم
لطفا مرا راهنمایی کنید،
سپاسگزارم.

Nima_NF
یک شنبه 23 دی 1386, 13:19 عصر
باید هنگام نصب سرویس در توابع مورد استفاده فلگی باشد که آن را start و یا اوتوماتیک کند (مثل ChangeServiceConfig و SERVICE_AUTO_START).

در هر صورت راه های دیگر:
1) یک راه استفاده از دستورات command است، فقط نام کلید آن را باید بنویسید نه DisplayName و سپس انتخاب یکی از حالت ها:



sc config <Service Key Name> start= <auto|demand|disabled>
مثال:
sc config srservice start= disabled

گرفتن نام کلید:



sc GetKeyName "<Display Name>"
مثال:
sc GetKeyName 'Task Scheduler'


---------------------

2) روش دیگر استفاده از رجیستری به جای command است:



HKLM\System\CurrentControlSet\Services\MyServiceNa me

Registry Key: Start (REG_DWORD)
مقدار های ممکن :
1 (System), 2 (Automatic), 3 (Manual), 4 (Disabled)

bigboy_user
دوشنبه 24 دی 1386, 11:54 صبح
باید هنگام نصب سرویس در توابع مورد استفاده فلگی باشد که آن را start و یا اوتوماتیک کند (مثل ChangeServiceConfig و SERVICE_AUTO_START)

Nima_NF عزیز روی این مورد بیشتر کار میکنم چون همانطور که گفتم میخوام از طریق برنامه نویسی ای کار انجام بدم،
البته روش دومی هم که گفتید(استفاده از ریجستری ) فکر کنم بشه توی سورس پیاده سازی کرد ، که اگه از روش اول جواب نگرفتم روی این روش کار میکنم.
به هر حال سپاس گذارم از شما

Nima_NF
دوشنبه 24 دی 1386, 14:31 عصر
چون همانطور که گفتم میخوام از طریق برنامه نویسی ای کار انجام بدم

احتمالا درست متوجه نشدید، چون هر دو روشی که ذکر کردم برای پیاده سازی با کد است نه به صورت دستی:

برای command شما از دستورات اجرای آن در برنامه خودتان باید استفاده کنید ( دستوراتی مثل system ، execl , ... ) و موارد را به همان صورت (یک srtring) به عنوان آرگومان تابع وارد و اجرا می کنید.

برای مورد 2 هم با استفاده از توابع رجیستری ، کلید ها را می سازید و مقدار می دهید. (که رایج ترین راه می باشد)