PDA

View Full Version : سوال: برنامه های مقیم در حافظه ؟ (Resident)



keyvan_s89
دوشنبه 13 آذر 1391, 20:27 عصر
سلام
من یه برنامه نوشتم و میخام وقتی ویندوز بالا اومد خود به خود در حافظه اجرا بشه بدون استفاده از Startup
چه جوری میشه از رزیدنت ها استفاده کرد؟ (در سی شارپ البته)
مرسی

Esmail Solhkhah
سه شنبه 14 آذر 1391, 11:15 صبح
در سطح کاربر : Windows Service

در سطح کرنل : درایور

موفق باشید.

keyvan_s89
سه شنبه 14 آذر 1391, 11:16 صبح
در سطح کاربر : Windows Service

در سطح کرنل : درایور

موفق باشید.

میشه یه کم بیشتر توضیح بدید ممنون

Esmail Solhkhah
سه شنبه 14 آذر 1391, 11:34 صبح
در مورد Windows Service در تاپیکهای زیر توضیح دادم
http://barnamenevis.org/showthread.php?307108-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A7%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%85%D8%A7%D9%86%DB%8C%D8%AA%D9%88%D8%B1%DB%8C%D 9%86%DA%AF-%DA%A9%D9%84%D8%A7%DB%8C%D9%86%D8%AA-%D9%87%D8%A7&p=1348190&viewfull=1#post1348190

http://barnamenevis.org/showthread.php?291845-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D8%B1-%D8%B2%D9%85%D8%A7%D9%86-%D9%85%D8%B9%DB%8C%D9%86

http://barnamenevis.org/showthread.php?299692-%D9%85%D8%B4%DA%A9%D9%84-%D8%A8%D8%A7-%D8%B3%D8%B1%D9%88%D9%8A%D8%B3-%D8%A8%D8%B1%D8%A7%D9%8A-%D9%BE%D8%B4%D8%AA%D9%8A%D8%A8%D8%A7%D9%86%D9%8A-%D8%AE%D9%88%D8%AF%DA%A9%D8%A7%D8%B1-%D8%A7%D8%B2-%D8%AF%D9%8A%D8%AA%D8%A7%D8%A8%D9%8A%D8%B3

در مورد درایور نویسی هم در تاپیک زیر

http://barnamenevis.org/showthread.php?325728-%D9%86%D8%AD%D9%88%D9%87-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%B3%D8%A7%D8%AE%D8%AA-%D9%BE%D8%B1%DB%8C%D9%86%D8%AA%D8%B1-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C&p=1433562&viewfull=1#post1433562
موفق باشید.

keyvan_s89
سه شنبه 14 آذر 1391, 15:51 عصر
در مورد Windows Service در تاپیکهای زیر توضیح دادم
http://barnamenevis.org/showthread.php?307108-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A7%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%85%D8%A7%D9%86%DB%8C%D8%AA%D9%88%D8%B1%DB%8C%D 9%86%DA%AF-%DA%A9%D9%84%D8%A7%DB%8C%D9%86%D8%AA-%D9%87%D8%A7&p=1348190&viewfull=1#post1348190

http://barnamenevis.org/showthread.php?291845-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D8%B1-%D8%B2%D9%85%D8%A7%D9%86-%D9%85%D8%B9%DB%8C%D9%86

http://barnamenevis.org/showthread.php?299692-%D9%85%D8%B4%DA%A9%D9%84-%D8%A8%D8%A7-%D8%B3%D8%B1%D9%88%D9%8A%D8%B3-%D8%A8%D8%B1%D8%A7%D9%8A-%D9%BE%D8%B4%D8%AA%D9%8A%D8%A8%D8%A7%D9%86%D9%8A-%D8%AE%D9%88%D8%AF%DA%A9%D8%A7%D8%B1-%D8%A7%D8%B2-%D8%AF%D9%8A%D8%AA%D8%A7%D8%A8%D9%8A%D8%B3

در مورد درایور نویسی هم در تاپیک زیر

http://barnamenevis.org/showthread.php?325728-%D9%86%D8%AD%D9%88%D9%87-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%B3%D8%A7%D8%AE%D8%AA-%D9%BE%D8%B1%DB%8C%D9%86%D8%AA%D8%B1-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C&p=1433562&viewfull=1#post1433562
موفق باشید.
خیلی ممنون از جوابتون
ولی من سر در نیاوردم میشه یه سرویس برام بنویسید که مثلا موقع اجرای ویندوز یه پیغام نشون بده. یه چیز ساده که طریقه نوشتنش رو یاد بگیرم.
خیلی ممنون

Esmail Solhkhah
چهارشنبه 15 آذر 1391, 19:27 عصر
خیلی ممنون از جوابتون

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


ولی من سر در نیاوردم

عین جملاتی که تو این تاپیکها نوشتم رو نقل قول میکنم ، اگه انصاف بدید چیز مبهمی وجود نداره


Service های ویندوز به زبان ساده برنامه هایی هستند که معمولا تو فاز لود سیستم عامل لود میشن و عمدتا فاقد GUI هستند
اگه DOS کار کرده باشید میشه گفت یه چیزی تو مایه های TSR
مثلا خود SQL SERVER یه سرویس ویندوز هست(فاقد GUI) که وقتی شما دارید با ManagementStudio مثلا یه دیتابیس میسازید
محیط Management Studio با سرویس SQL SERVER ارتباط برقرار میکنه و نهایتا این سرویس SQL SERVER هست که داره دیتابیس رو برا شما میسازه
در حالی که بنظر میاد این کاره Management Studio هست
برا برنامه نویسی سرویس های ویندوز تو تمپلیتهای Visual Studio شما گزینه Windows Service رو دارید
سرویسهای ویندوز دارای قابلیت Start - Stop- Puase - Resume هستند
(مثال SQL SERVER که آشنا هستید یا سرویس Print Spooler که وظیفه سرویس دهی چاپ رو بر عهده داره)
سرویسهای ویندوز بدلیل عدم وجود GUI اجرای سبکتری دارند و برای برنامه هایی که باید کار سرویس دهی انجام بدن مناسبتر هستند)


سرویس های تحت ویندوز برنامه هایی هستند که اینترفیس ندارند و موقع بالا آمدن ویندوز همزمان با اجزای دیگر ویندوز استارت میشن
برای کار با این نوع برنامه ها وقتی تو ویژوال استدیو پروژه ایجاد میکنی نوعش رو بذار Windows Service
هر سرویس ویندوز دو متد داره بنام
OnStart
و
OnStop
که از نامشون پیداس واسه چین
و البته بعد نوشت سرویس و کامپایل اون باید اونو نصب کنی


شما باید سرویس نوشته شده رو کامپایل کنید
مثلا خروجی شما
myservice.exe هست
برای نصبش تو مسیر نصب دات نت 2 یه برنامه ای هست بنام installuti که سرویس رو نصب میکه
installuti myservice.exe
برای نصبش
و برای درآوردن از نصب
installutil /u myservice.exe
بعدش باید سرویست رو جزو سرویسهای ویندوز ببینی در control panel-Administrative tools-Services


اگه میخاید سرویستون بتونه با دسکتاپ ارتباط داشته باشه و بتونه مسیج باکس بده باید تو سرویس منیجر ویندوز تو قسمت Properties - Log On

اون تیک.. Allow Service to Interact رو بزاری


این کد رو تو رویداد serviceInstaller1_Committed بنویسید

ConnectionOptions coOptions = new ConnectionOptions();
coOptions.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope mgmtScope = new ManagementScope(@"root\CIMV2", coOptions);
mgmtScope.Connect();
ManagementObject wmiService;
wmiService = new ManagementObject("Win32_Service.Name='" + serviceInstaller1.ServiceName + "'");
ManagementBaseObject InParam = wmiService.GetMethodParameters("Change");
InParam["DesktopInteract"] = true;
ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null);




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

شما استارت رو بزن بنده یا دوستان کمک میکنیم، نوشتنش برای بنده کاری نداره هدف اینه که جسارتا اگه ناراحت نشید : ماهی گیری یاد بدیم نه ماهی آماده

موفق باشید.

keyvan_s89
چهارشنبه 15 آذر 1391, 20:33 عصر
دوست عزیز برای تشکر لطفا از دکمه تشکر استفاده کنید.



عین جملاتی که تو این تاپیکها نوشتم رو نقل قول میکنم ، اگه انصاف بدید چیز مبهمی وجود نداره









ConnectionOptions coOptions = new ConnectionOptions();
coOptions.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope mgmtScope = new ManagementScope(@"root\CIMV2", coOptions);
mgmtScope.Connect();
ManagementObject wmiService;
wmiService = new ManagementObject("Win32_Service.Name='" + serviceInstaller1.ServiceName + "'");
ManagementBaseObject InParam = wmiService.GetMethodParameters("Change");
InParam["DesktopInteract"] = true;
ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null);


شما استارت رو بزن بنده یا دوستان کمک میکنیم، نوشتنش برای بنده کاری نداره هدف اینه که جسارتا اگه ناراحت نشید : ماهی گیری یاد بدیم نه ماهی آماده

موفق باشید.

خوب در قدم اول من یه سرویس ایجاد کردم و در قسمت کد هم دو قسمت OnStart و OnStop رو داره خوب الان چیکار باید بکم ؟
یه سوال دیگه من میخاوم مثلا وقتی فایل EXE ساخته شد و روش کلیک شد بره تو حافظه مثل ویروس ولی نمیخام نصب بشه با سرویس میشه این کار رو کرد یا حتما باید نصب بشه .؟
ببخشید من تا 3 روز پیش اسم سرویس رو هم نشنیده بودم چه برسه به اینکه باهاش کار بکنم.

Esmail Solhkhah
شنبه 18 آذر 1391, 10:44 صبح
خوب در قدم اول من یه سرویس ایجاد کردم و در قسمت کد هم دو قسمت OnStart و OnStop رو داره خوب الان چیکار باید بکم ؟

OnStart همونطوری که اسمش مشخصه زمانی اتفاق می افته که سرویس استارت شده، میتونید از همین جا شروع کنید.


یه سوال دیگه من میخاوم مثلا وقتی فایل EXE ساخته شد و روش کلیک شد بره تو حافظه

هر برنامه ای که اجرا کنید میره تو حافظه.


ولی نمیخام نصب بشه

نصب سرویس رو با نصب برنامه های تحت دسکتاپ اشتباه نگیرید ، تو تاپیکهای اشاره شده، نصب سرویس رو توضیح دادم.

موفق باشید.

keyvan_s89
شنبه 18 آذر 1391, 18:18 عصر
من هر کار میکنم اررور میده.
بیس کار رو نمیدونم چه جوریه تاپیک ها رو هم خوندم:ناراحت:

Esmail Solhkhah
یک شنبه 19 آذر 1391, 00:21 صبح
من هر کار میکنم اررور میده.
بیس کار رو نمیدونم چه جوریه تاپیک ها رو هم خوندم

1:پروژتون باید از نوع Windows Service باشه
2:بعد از Build کردن فایل اجرایی رو به ترتیبی که تو تاپیکهای بالا گفتم نصب کنید
3:سرویس رو استارت کنید
4:اگه نیازه سطح دسترسی لازم رو به سرویس اعمال کنید.
5: این لینک (http://msdn.microsoft.com/en-us/library/zt39148a%28v=vs.80%29.aspx) رو هم ببینید.

موفق باشید.

keyvan_s89
یک شنبه 19 آذر 1391, 15:38 عصر
1:پروژتون باید از نوع Windows Service باشه
2:بعد از Build کردن فایل اجرایی رو به ترتیبی که تو تاپیکهای بالا گفتم نصب کنید
3:سرویس رو استارت کنید
4:اگه نیازه سطح دسترسی لازم رو به سرویس اعمال کنید.
5: این لینک (http://msdn.microsoft.com/en-us/library/zt39148a%28v=vs.80%29.aspx) رو هم ببینید.

موفق باشید.
یعنی حتما باید برم تو کنترل پنل-قسمت سرویس و از اونجا سرویسم رو استارت کنم ؟ که هر دفعه ویندوز میاد بالا اجرا بشه ؟