PDA

View Full Version : گفتگو: برنامه‌ی کنترل زمان استفاده‌ی فرزندان ( با استفاده از thread )



SabaSabouhi
چهارشنبه 23 اردیبهشت 1388, 16:56 عصر
با سلام
چند روز پیش اولین تجربه‌ی شخصی خودم رو در برنامه‌نویسی با threadها انجام دادم. کارم نیمه تموم موند چون به یه مشکل خوردم. اگه دوستان و استادان تمایل داشته باشن این برنامه رو اینجا می‌گذارم ( به همراه source ) و دوستان هم در حل مشکلش به من کمک کنن.
در صورت تمایل دوستان واجازه‌ی مدیران تالار، برنامه و source و توضیحات تکمیلی رو خواهم فرستاد.

صورت مساله:
برنامه‌ای می‌خواستم که مدت استفاده فرزندم از کامپیوتر رو با دو شرط محدود کنه:
1. در هر روز ( به تفکیک روزهای شنبه تا جمعه ) پنجره‌های زمانی مجاز رو تعریف کنم. مثلاً شنبه تا چهار شنبه بین 4 تا 6:30، پنج‌شنبه بین 4 تا 7 و جمعه از 10 تا 12 صبح و 4 تا 7 عصر.
2. در هر روز ( باز به تفکیک روزهای هفته ) حداکثر مجاز مصرف. مثلاً برای شنبه تا پنج‌شنبه 1:45 در روز و جمعه‌ها 3 ساعت در روز.
3. امکان اضافه کردم زمان اضافی به صورت اختیاری توسط والدین.

راه حل:
دو برنامه مورد نیاز هست:
1. برنامه SSPCServer که با استفاده از یک timer زمان مصرفی رو ثبت می‌کنه و اگه یکی از شرط‌های مجاز بودن استفاده برقرار نبود کاربر رو logoff کنه. و ثبت مصرف در registry~LocalMachine.
2. برنامه SSPCManager: برای تعریف کاربر، پنجره‌های زمانی و زمان مجاز هر روز. و هم‌چنین تنظیمات برنامه‌ی server شامل interval زمان کنترل ( مثلاً هر پنج دقیقه ) و کاربری که برنامه‌ی server تحت اون اجرا می‌شه.

چون کاربر تحت کنترل ( فرزند ) دسترسی Admin نداره، بنابراین نمی‌تونه در Registry~LocalMachine بنویسه. اگه تو CurrentUser بنویسه دیگه کاربر مدیریت کننده ( والدین ) امکان خوندن محتوی CurrentUser اون رو ندارن. پس راه حل اینه که برنامه‌ی Server با کاربر دیگری که admin هست اجرا بشه.

اجرا شدن و پایان یافتن برنامه‌ی server با برنامه‌ی manager انجام می‌گیرد. چه در حالت AdminMode ( که دارای UI هست ) و چه در حالت ChildMode که بدون UI هست.

مشکل فعلی:

* هنگام اجرای برنامه‌ی برنامه‌ی SSPCServer با کاربر Admin ویندوز خطا می‌ده و برنامه رو می‌بنده. ( باعث شد کار نیمه‌تموم باقی بمونه )
* هنگام اجرای برنامه یک برنامه‌ی conime.exe هم اجرا می‌شه که ظاهراً مربوط به زبان‌های آسیایی هست در حالی که برنامه‌ی من فقط انگلیسی هست.

صبا صبوحی

SMRAH1
چهارشنبه 23 اردیبهشت 1388, 17:06 عصر
سلام

1) پیشنهاد : اگز سرویس بنویسید،می تونید اون رو توی کاربر محدود هم به شکل admin اجراش کنید (این کار را ویندوز خودش براتون می کنه!).
2)به جای نوشتن داده در رجیستری بهتره اون رو در روی هارد (مثلا در Apllication Data) بنویسد.در ضمن در هر کاربری میتونید به رجیستری کاربر دیگه دسترسی داشته باشید (HKEY_USERS\S-1-5-21-..).
3) اگر نمونه رو بگذارید بهتر می شه در مورد استفاده از IME نظر داد.

موفق باشید

esmaeily-hosein
چهارشنبه 23 اردیبهشت 1388, 17:11 عصر
آیا برنامه SSPCServer اجرا میشود و یا بعد از اجرا برنامه بسته میشود .

SabaSabouhi
شنبه 26 اردیبهشت 1388, 11:30 صبح
سلام

1) پیشنهاد : اگز سرویس بنویسید،می تونید اون رو توی کاربر محدود هم به شکل admin اجراش کنید (این کار را ویندوز خودش براتون می کنه!).

با سلام
بله حق با شماست، سرویس باید به‌تر باشه. و اما یک سوال، اگه سرویس باشه چطوری باید باهاش ارتباط برقرار کنم ( از طریق برنامه‌ی manager)



2)به جای نوشتن داده در رجیستری بهتره اون رو در روی هارد (مثلا در Apllication Data) بنویسد.در ضمن در هر کاربری میتونید به رجیستری کاربر دیگه دسترسی داشته باشید (HKEY_USERS\S-1-5-21-..).

بله، اما نمی‌خواستم کار IO انجام بدم. چون دائم باید فایل رو باز کنم و ببندم. که هم سربار زیادی ایجاد می‌کنه و هم این که احتمال خطا در برنامه زیاد می‌شه.


3) اگر نمونه رو بگذارید بهتر می شه در مورد استفاده از IME نظر داد.

موفق باشید

نمونه رو هم به زودی می‌فرستم.

صبا صبوحی

SabaSabouhi
شنبه 26 اردیبهشت 1388, 11:31 صبح
آیا برنامه SSPCServer اجرا میشود و یا بعد از اجرا برنامه بسته میشود .

با سلام
خیر، بسته نمی‌شه و جداگانه کارش رو ادامه می‌ده.

صبا صبوحی

SabaSabouhi
شنبه 26 اردیبهشت 1388, 11:49 صبح
با سلام
این هم source برنامه ( در VS2008 نوشته شده )

صبا صبوحی