PDA

View Full Version : سوال: اجرای تنها یک برنامه در ویندوز



mohamad.alijani
یک شنبه 04 مهر 1389, 00:10 صبح
سلام خدمت دوستان
من برنامه ای دارم که میوام همزمان با بالا اومدن سیستم عامل اجرا بشه و فقز همین برنامه روز سیستم عامل اجرا شه.
یعنی حتی کاربر به سیستم عامل هم دسترسی نداشته باشه. مثلا کلید فشردن کلی ویندوز باعث اجرای start menu نشه یا زدن ctrl +alt + delete باعث اجرای task manager نشه. یا پنجره run ظاهر نشه.
در کل به هیچ امکانی از سیستم عامل دسترسی نداشته باشه و وقتی هم برنامه بسته می شه سیستم عامل خاموش بشه.
امیدوارم مسدله روشن شده باشه.
در مود اجرا موقع بالا اومدن مشکلی نیست از طریق startup حل می شه ولی برای مابقی کسی راه حلی داره
متشکرم

flash118
یک شنبه 04 مهر 1389, 00:20 صبح
دوست عزیز میشه دلیل این کارتون رو روشن کنید اگه اینجور باشه که شما می گید شما دارید تو روز روشن ویژگی multi programing ویندوز رو می خواهید از بین ببرید در طراجی بدین شکل مشکلی نیست امکان پذیر هست البته با استفاده از توابع خود سیستم ولی چیزی که خیلی برام چای سئوال هست اینه که چرا شما به جای توسعه دارین محدود میکنید فکر نمی کنید کاربر نهایی اطمینانش نسبت به سیستم و از علاقش کمتر می شه؟

debugger
یک شنبه 04 مهر 1389, 00:24 صبح
من برنامه ای دارم که میوام همزمان با بالا اومدن سیستم عامل اجرا بشه و فقز همین برنامه روز سیستم عامل اجرا شه.


این کار عملی نیست

تازه میخوای با دات نت ویروس بنویسی ؟ :قهقهه:

flash118
یک شنبه 04 مهر 1389, 00:30 صبح
داداش debuger دقت کنی خودش گفته که می خواهد در startup قرار بده پس بعد از ورود به ویندوز هست اگه همزمان بخواهد بله اونی که شما میگی کاملا صحیح هست

debugger
یک شنبه 04 مهر 1389, 01:33 صبح
سلام خدمت دوستان
من برنامه ای دارم که میوام همزمان با بالا اومدن سیستم عامل اجرا بشه و فقز همین برنامه روز سیستم عامل اجرا شه.
یعنی حتی کاربر به سیستم عامل هم دسترسی نداشته باشه. مثلا کلید فشردن کلی ویندوز باعث اجرای start menu نشه یا زدن ctrl +alt + delete باعث اجرای task manager نشه. یا پنجره run ظاهر نشه.
در کل به هیچ امکانی از سیستم عامل دسترسی نداشته باشه و وقتی هم برنامه بسته می شه سیستم عامل خاموش بشه.
امیدوارم مسدله روشن شده باشه.
در مود اجرا موقع بالا اومدن مشکلی نیست از طریق startup حل می شه ولی برای مابقی کسی راه حلی داره
متشکرم

به جملا رنگی دقت کن flash118 عزیز

ببین میخواد در start up قرار بده یا اونی که من میگم ؟؟؟؟

کاری که ایشون میخواد امکان پذیر نیست و منظورشون هم start up نیست . و از درون مایه ی
حرفش هم معلومه که start up را بلده اما چیزی فرا تر از اون میخواد

پس یکمی دقتت را بیشتر کن

flash118
یک شنبه 04 مهر 1389, 02:58 صبح
با سلام خدمت debuger عزیز
آقا سخن شما کاملا درست و صحیح اون نوشته آخری که نوشتن

در مود اجرا موقع بالا اومدن مشکلی نیست از طریق startup حل می شه
باعث سردرگمی بنده شده بالا یه چیز گفتن پایین یه چیز دیگه پس منم بی تقصیرم ولی بازم ممنون که توجه میکنید تذکرتون هم ممنون سعی میکنم بیشتر دقت کنم یا حق

danialafshari
یک شنبه 04 مهر 1389, 05:17 صبح
عزیز دلم تو تنها لازمه explorer.exe رو kill کنی و بعدش یک سری دستکاری ها در رجیستری و کپی در startup اینا رو میتونی انجام بدی من یه نمونه درست کردم الان رو کامپیوتره.پی ام بده به آیدیم تا برات بفرستمش yahoo id = danial_online

vcldeveloper
یک شنبه 04 مهر 1389, 06:39 صبح
این حالت رو بهش میگن Kiosk. می تونید به این شکل عمل کنید:
1- یک برنامه را در زمان بوت شدن ویندوز شروع کنید (از طریق پوشه Startup یا کلیدهای رجیستری مربوطه یا اجرای یک سرویس ویندوز).
2- ویندوز قابلیت داشتن چند Desktop مختلف را داره، البته در هر لحظه فقط یک Desktop میتونه Active باشه. با استفاده از توابع API ویندوز (CreateDesktop) می تونید یک Desktop جدید بسازید، و برنامه مورد نظر خودتون رو در همون Desktop جدید اجرا کنید. Desktop جدید تا حدودی از Desktop اولیه کاربر ایزوله هست. البته Desktop در ویندوز یک شی Securable هست، پس می تونید Permission های مختلفی را براش تنظیم کنید.
3- برنامه شما در یک Desktop خالی اجرا خواهد شد. برخی از امکانات را می تونید از طریق تنظیم Permission ها محدود کنید. با توجه به اینکه explorer.exe روی این Desktop اجرا نشده، Desktop شما آیکن، Taskbar یا منوی Start نخواهد داشت. کاربر میتونه همچنان Task Manager را فعال کنه، و از طریق آن، پروسه Explorer.exe را اجرا کنه.
4- کدهای مختلفی برای غیرفعال کردن Task Manager وجود دارند که می تونید از طریق آنها، دسترسی کاربر به Task Manager را محدود کنید.
5- در زمانی که برنامه تان در حال بسته شدن هست، می تونید با استفاده از تابع API ویندوز با نام ExitWindowsEx، ویندوز را Shut down کنید.

در واقع این کاری هست که صفحه Login ویندوز انجام میده؛ این صفحه یک Desktop خاص هست که وقتی Active میشه، کاربری راهی برای خروج از آن و رسیدن به Desktop خودش نداره. وقتی رمز عبور را درست وارد کرد، ویندوز Desktop کاربر را Active میکنه، و کنترل از صفحه login خارج میشه.

این کلیاتش بود. حالا اینکه در #C همچین کدی را به چه شکلی میشه نوشت، من اطلاع ندارم، چون باهاش کار نمی کنم. می تونید نمونه هایی از کدهای مرتبط با این موضوع را با زبان های دیگه، بخصوص ++C در اینترنت پیدا کنید.

fjm11100
یک شنبه 04 مهر 1389, 10:21 صبح
یک روشش اینه که برنامه خودت را جای explorer.exe اجرا کنی. برو به:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
و مقدار کلید Shell را به اسم برنامه ات عوض کن. جلوی taskmanager را هم با api باید بگیری. کدش توی اینترنت زیاده.
اما اگر تونستی در ویندوز 7 جلوی Alt+ctrl+del را بگیری حتما به من هم یاد بده. فوقش میشه توی از Group policy بعضی از گزینه ها را حذف کرد.

mohamad.alijani
یک شنبه 04 مهر 1389, 19:00 عصر
با سلام
فکر کنم ابتدای این تاپیک یه کم بحث شد برای روشن شدن موضوع بگم که قصد نوشتن ویروس نیست و قرار نیست که ما عقب گرد داشته باشیم و یک قابلیت multi programming رو نادیده بگیرم.
فرض کنید شما مسئول یک کتابخانه هستید و یک نم افزار آماده کردید که اطلاعات مورد نیاز کاربران کتابخانه رو فراهم می کنه از قبل انواع جستجوها برای کتاب مثل مولف موضوع و ... حالا اگر بخواهید این نرم افزار رو ی کامپیوتر موجود در کتابخانه اجرا بشه منطقا باید دسترسی کاربران به امکانات سیتم عامل محدود بشه (از نظر شما اینطور نیست؟) تا فقط این نرم افزار نمایش پیدا کنه و کسی نتونه برنامه رو پاک کنه یا یا برنامه دیگه ای رو اجرا کنه و ... فکر می کنم این پاسخ برای کاربران عزیز debugger و flash118 باعث رفع شبهه بشه که قصد نوشتن ویروس یا چیز مشابه نیست.
از danialafshari و fjm11100 و همچنین آقای کشاورز بابت پاسخ مفیدشون تشکر می کنم.