PDA

View Full Version : اجرا کردن فایل exe در ویندوز سرویس



terrorhell
پنج شنبه 27 فروردین 1394, 01:29 صبح
سلام دوستان
چجوری در متد onstart ویندوز سرویس یک فایل exe اجرا کنم
مدل های مختلف و کد های مختلف از گوکل و استک اورفلو پیدا کردم ولی هیچ کدوم جواب نداد
ممنون میشم راهنمایی کنید

mjzaret
شنبه 28 شهریور 1394, 00:10 صبح
منم دنبال راه حلی هستم که بتونم فایل اجرایی رو به صورت سرویس دربیارم.

کسی از دوستان تونسته اینکار رو انجام بده؟

من یه فایل دارم که می‌خوام در سی شارپ برنامه‌ای بنویسم که این فایل اجرایی رو به سرویس‌های ویندوز اضافه کنه.

شاد باشید :لبخندساده:

SabaSabouhi
شنبه 28 شهریور 1394, 09:29 صبح
منم دنبال راه حلی هستم که بتونم فایل اجرایی رو به صورت سرویس دربیارم.

کسی از دوستان تونسته اینکار رو انجام بده؟

من یه فایل دارم که می‌خوام در سی شارپ برنامه‌ای بنویسم که این فایل اجرایی رو به سرویس‌های ویندوز اضافه کنه.

شاد باشید :لبخندساده:

سلام
دوست گزامی، چرا می‌خواهی یک فایل اجرایی رو سرویس کن؟ سرویس‌ها هیچ تبادل اطلاعاتی با کاربر نمی‌تونن داشته باشن. یعنی ورود و خروجی ندارن.
و منطق برنامه‌نویسی برای سرویس اندکی با برنامه‌های عادتی تفاوت داره. به همین دلیل به‌تره سرویس رو به عنوان یک موجودیت جداگانه ببینی و براش
کد بنویسی.

صبا صبوحی

combo_ci
شنبه 28 شهریور 1394, 09:56 صبح
وب سرویس برای جاهایی خوبه که میدونین جوابی که با کاربر میخواین بردین چیه مثلا یه وب سرویس برای دریافت و ارسال داده در شبکه ...الیته من یه بار اومدم اینو بنویسم به مشکلاتی خوردم که باز همون اگزه نوشتم برناممو

mjzaret
شنبه 28 شهریور 1394, 10:58 صبح
من نرم افزاری دارم که برای کارکردن قسمتی از اون باید سرویسش در ویندوز نصب شده باشد.

نمی‌خوام که سرویس ویندوزی بنویسم. میخوام یه فایل اجرایی با یه دستور ساده به سرویسهای ویندوز اضافه بشه.


sc create <ServiceName> binpath="ex file Path" DisplayShow="Show Display Name in Services" start=auto

کد بالا به صورت دستی فایل اجرایی رو به سرویسهای ویندوز اضافه می‌کنه.

حالا این فایل خاصیت سرویس شدن داره یا نه به کنار.

من دنبال دستوری هستم که در صورت برقرار بودن شرایط خاص بتونه در ویندوز اون فایل رو به سرویس اضافه کنه.

شروط هم با توجه به نوع سیستم عامل، پلتفرمی که سیستم عامل در آن در حال اجرا هست متفاوته.

مثلا در ویندوز XP یه فایل خاصی هست و در ویندوز 7 نوع 32 بیت یه فایل خاص و در ویندوز 7 نوع 64 بیت یه فایل خاص.

شاد باشید :لبخندساده:

mjzaret
شنبه 04 مهر 1394, 15:30 عصر
کسی نیست در این زمینه راهنمایی کنه؟

شاد باشید :لبخندساده:

SabaSabouhi
شنبه 04 مهر 1394, 19:47 عصر
کسی نیست در این زمینه راهنمایی کنه؟

شاد باشید :لبخندساده:

سلام
دوست عزیز، من واقعاً نمی‌دونم که چطوری می‌شه یه فایل اجرایی رو تبدیل به سرویس ویندوزی کرد.
چون سرویس مولفه‌هایی داره که طبیعی هست تو برنامه‌ی عادی وجود نداره.
نمی‌دونم نیازی چی هست و چه شرایطی برای کار شما وجود داره. اما نوشتن سرویس ویندوز
به هیچ عنوان کار پیچیده و سختی نیست. فقط یک سری شرایط رو باید رعایت کنی. و در نظر
داشته باشی که هیچ نوع تبادل اطلاعاتی با کاربر نخواهی داشت.
و از طرف دیگه معمولاً باید یا از تایمر استفاده کنی و یا بارای پاسخ به برخی رویدادهای خاص کد
بنویسی. غیر از این بقیه‌ی قسمت‌ها با برنامه‌ی ویندوزی تفاوتی نداره.
شما به راحتی می‌توی از dllهای عمومی برنامه‌های دیگه‌ای که نوشتی ( بدون واسط کاربر )
توی سرویس‌ها استفاده کنی.
اگه تصمیم به نوشتن سرویس گرفتی و مشکلی داشتی، من تا حد توان کمک می‌کنم.

صبا صبوحی

pbm_soy
یک شنبه 05 مهر 1394, 01:38 صبح
اگر هدف اجرای اتوماتیک در زمان بالا آمدن ویندوز باشد که راه زیاد است
مانند startup, windows scheduler., autoexec.bat., user profile., windows service

در ضمن برنامه های کوچک و بزرگ زیادی وجود دارد که یک برنامه اجرایی را به عنوان یک سرویس در ویندوز ست میکند
البته ناگفته نماند که اینکار را با استفاده از وارد کردن چند اطلاعات ویا همان ثبت کردن نام ومسیر فایل اجرایی آنرا به عنوان سرویس فعال خواهید کرد!

mjzaret
یک شنبه 05 مهر 1394, 02:01 صبح
از اینکه پاسخ سوالم رو دادید تشکر می‌کنم.

من عرض کردم می‌خوام یه سرویس به ویندوز اضافه کنم.

قصد ندارم سرویس ویندوز بنویسم.

برای اضافه کردن سرویس به ویندوز از دستور sc می‌توان استفاده کرد.

اما من می‌خوام در سی شارپ با زدن دکمه‌ای سرویس برای ویندوز ایجاد بشه با شرایط خاص من.

حالا این روش سرویس کردن یه فایل exe درست هست یا نه به کنار.

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

شاد باشید :لبخندساده:

محمد آشتیانی
یک شنبه 05 مهر 1394, 02:31 صبح
سلام
حقیقتشو بخواهید من متوجه سوالتون نشدم ، ببینید با اون دستوری که فرمودید شما میتونید یک سرویس رو (که ازقضا یک فایل با پسوند exe هست اما بصورت معمولی اجرا نمیشه) نصب کنید و داخل سرویس های ویندوزببینید و اجراش کنید.



من عرض کردم می‌خوام یه سرویس به ویندوز اضافه کنم.

خب این یعنی شما باید یک سرویس داشته باشید (سرویس یک اسم نیست ، یک فایل exe هست منتهی با شرایط خاص خودش) تا با اون دستور اون رو نصب کنید در واقع ، امکان پذیر نیست که شما یک فایل اجرایی معمولی رو به عنوان سرویس نصب کنید.


اگر منظور شما غیر از اینا هست لطفا توضیح بیشتری بفرمائید

shadi khanum
یک شنبه 05 مهر 1394, 10:44 صبح
از اینکه پاسخ سوالم رو دادید تشکر می‌کنم.

من عرض کردم می‌خوام یه سرویس به ویندوز اضافه کنم.

قصد ندارم سرویس ویندوز بنویسم.

برای اضافه کردن سرویس به ویندوز از دستور sc می‌توان استفاده کرد.

اما من می‌خوام در سی شارپ با زدن دکمه‌ای سرویس برای ویندوز ایجاد بشه با شرایط خاص من.

حالا این روش سرویس کردن یه فایل exe درست هست یا نه به کنار.

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

شاد باشید :لبخندساده:

من تو پروژه خودم این کارو کردم که اول یه ویندوز سرویس نوشتم، بعد یه پروژه ویندوز اپلیکیشن نوشتم که با زن دکمه ای توی اون برنامه ویندوز اپلیکیشنی، اون سرویسی که نوشته بودم رو در سرویس های ویندوز نصب و استارت میکرد.

mjzaret
دوشنبه 06 مهر 1394, 01:23 صبح
من برنامه‌ای دارم که نیاز داره قبلش سرویسش به همراه یک سری اطلاعات دیگه نصب بشه.

حالا من می‌خوام به سرویسهای ویندوز سرویسی اضافه کنم.

نمی‌خوام پروژه‌ای بنویسم که سرویس باشه.

مثال می‌زنم:

من می‌خوام برنامه‌ای رو روی سیستم نصب کنم.

قبلش باید تشخیص بدم که نوع سیستم عامل و پلتفرمش چیه.

بعدش باید با توجه به این اطلاعات فایل exe ای که به صورت سرویس اجرا میشه رو باید به سرویسهای ویندوز اضافه کنم.

من دنبال دستوری هستم که بشه با اون فایل اجرایی که قابلیت سرویس شدن رو داره به سرویسهای ویندوز اضافه کنم.

شاد باشید :لبخندساده:

shadi khanum
دوشنبه 06 مهر 1394, 10:59 صبح
من برنامه‌ای دارم که نیاز داره قبلش سرویسش به همراه یک سری اطلاعات دیگه نصب بشه.

حالا من می‌خوام به سرویسهای ویندوز سرویسی اضافه کنم.

نمی‌خوام پروژه‌ای بنویسم که سرویس باشه.

مثال می‌زنم:

من می‌خوام برنامه‌ای رو روی سیستم نصب کنم.

قبلش باید تشخیص بدم که نوع سیستم عامل و پلتفرمش چیه.

بعدش باید با توجه به این اطلاعات فایل exe ای که به صورت سرویس اجرا میشه رو باید به سرویسهای ویندوز اضافه کنم.

من دنبال دستوری هستم که بشه با اون فایل اجرایی که قابلیت سرویس شدن رو داره به سرویسهای ویندوز اضافه کنم.

شاد باشید :لبخندساده:

منظورتون از فایل اجرایی که قابلیت سرویس شدن داره چیه؟ واسه اینکه بتونید چیزی به سرویس های ویندوز اضافه کنید باید برنامه از نوع سرویس باشه دیگه ، نه برنامه اپلیکیشنی . اگر اون چیزی که میخواهید به سرویس های ویندوز اضافه کنید مثلا پروژه ویندوز سرویسی باشه با این دستور میتونید در سرویسهای ویندوز نصب و اضافه اش کنید.با این فرض که فایل exe سرویستون کنار exe همین برنامه ای باشه که میخاد سرویس رو نصب کنه.
موفق باشید




If ServiceTools.ServiceInstaller.ServiceIsInstalled("ServiceName") Then
ServiceTools.ServiceInstaller.Uninstall("ServiceName")
End If
Dim pa As String = Application.StartupPath & "\ServiceName.exe"

ServiceTools.ServiceInstaller.InstallAndStart("ServiceName", "ServiceName", _
pa)

RezaBehrang
دوشنبه 11 آبان 1394, 19:17 عصر
با سلام

جواب سوال اصلی تاپیک کلا فراموش شد انگار؟

در برنامه های معمولی با فرامین کلاس Process میشه یک برنامه رو run کرد ولی در win service نمیشه

اگه کسی راه حل رو بلده خواهشا بگه


در کل سوال من اینه که اگه ما بخوایم از طریق یک win service یک کوئری رو در دیتابیس انجام بدیم و اگه شرایط خاصی برقرار بود به نحوی به کاربر اطلاع بدیم باید چه کنیم

چون ارتباط با کاربر بطور مستقیم از طریق ویندوز سرویس غیرممکنه پس شاید بهترین راه اجرای یک برنامه واسطه باشه