PDA

View Full Version : سوال: مشکل در Windows Service ؟



mdssoft
پنج شنبه 12 شهریور 1388, 13:14 عصر
با سلام.
من یه پروژه windows service درست کردم ، بعد با متد زیر نصبش کردم :


static void InstallService(string ExeFilename)
{
System.Configuration.Install.AssemblyInstaller Installer = new System.Configuration.Install.AssemblyInstaller(Exe Filename, new string[] { });
Installer.UseNewContext = true;
Installer.Install(null);
Installer.Commit(null);
}بعد از نصب هم با متد زیر سرویس رو start کردم :


static void StartService(string serviceName, int timeoutMilliseconds)
{
ServiceController service = new ServiceController(serviceName);
try
{
TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

service.Start();
service.WaitForStatus(ServiceControllerStatus.Runn ing, timeout);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}اما بعد از start شدن سرویس ، متد OnStart توی پروژه ویندوز سرویسم اجرا نمیشه !
میشه منو راهنمایی کنید.
ممنون.

اینم خود پروژه هست :
36331

mdssoft
جمعه 13 شهریور 1388, 22:26 عصر
من مشکل رو فهمیدم چیه !
تو Windows Service نمیتونیم به فولدر desktop دسترسی داشته باشیم و فایلی رو توش ایجاد کنیم و چون من در پروژه خودم می خواستم که تو Desktop فایلی ایجاد کنم اتفاقی نمی افتاد.
ما میتونیم این مشکل رو به صورت دستی حل کنیم ، یعنی بریم تو Computer Management -> Services و بعد سرویس مورد نظر خودمون رو پیدا کنیم و روش کلیک راست کنیم و به قسمت زیر بریم
Properties -> Logon Tab
و بعد Allow service to interact with desktop رو فعال کنیم.

اما می خواستم بدونم ، آیا ممکن هست این کار رو با برنامه انجام بدیم یا نه !
ممنون

milad.biroonvand
شنبه 28 آذر 1388, 15:00 عصر
من مشکل رو فهمیدم چیه !
تو Windows Service نمیتونیم به فولدر desktop دسترسی داشته باشیم و فایلی رو توش ایجاد کنیم و چون من در پروژه خودم می خواستم که تو Desktop فایلی ایجاد کنم اتفاقی نمی افتاد.
ما میتونیم این مشکل رو به صورت دستی حل کنیم ، یعنی بریم تو Computer Management -> Services و بعد سرویس مورد نظر خودمون رو پیدا کنیم و روش کلیک راست کنیم و به قسمت زیر بریم
Properties -> Logon Tab
و بعد Allow service to interact with desktop رو فعال کنیم.

اما می خواستم بدونم ، آیا ممکن هست این کار رو با برنامه انجام بدیم یا نه !
ممنون


دقیقا جواب همینه ، اگر برنامه حتی داخل mydocument باشه هم سرویس اضافه نمی شه ، بنظرم باید پروژه هم بسته شه .

SabaSabouhi
شنبه 28 آذر 1388, 16:40 عصر
با سلام
دوست عزیز، چیزی که شما بهش توجه نکرده‌اید این است که یک Windows Service تحت کاربر system account اجرا می‌شه و چون کاربری متفاوت با کاربر شماست، در نتیجه پوشه‌های MyDocument و یا Desktop شما برای اون بی‌معنا هستن.
برای دسترسی به پوشه MyDocument کاربر خاص ( مثلاً MyUser ) باید به این شکل عمل کنید:



C:\Users\MyUser\Documents\


البته این برای WindowsVista هست، اگه اشتباه نکنم برای ویندوزهای قبلی بجای پوشه‌ی \Users باید از Document And Settings استفاده کرد.

صبا صبوحی