PDA

View Full Version : برنامه صد در صد غیر قابل بستن



Gladiator
یک شنبه 24 آبان 1383, 11:44 صبح
با سلام ؛

1) نگو جستجو کن .
2) چطوری میتونم برنامه ای داشته باشم که به هیچ وجه من الوجوح نشه بستش ؟

متشکرم .

مهدی کرامتی
یک شنبه 24 آبان 1383, 13:19 عصر
چطوری میتونم برنامه ای داشته باشم که به هیچ وجه من الوجوح نشه بستش ؟
چنین کاری ممکن نیست، چون بهرحال از طریق Task Manager -> Processes قابل بستن است. یک کار ساده اینه که امکان باز کردن Task Manager رو از کاربر بگیری:

procedure DisableCtrAltDel(Val: Boolean);
var
MyReg: TRegistry;
begin
MyReg := TRegistry.Create;
with MyReg do
begin
RootKey := HKEY_CURRENT_USER;
OpenKey('\Software\Microsoft\Windows\CurrentVersio n\Policies\System', True);
if Val then
reg.WriteString('DisableTaskMgr', '1')
else
reg.DeleteValue('DisableTaskMgr');
reg.CloseKey;
end;
end;

// To enable Ctr+Alt+Del:

procedure TForm1.Button1Click(Sender: TObject);
begin
DisableCtrAltDel(True);
end;

// To disable Ctr+Alt+Del:

procedure TForm1.Button1Click(Sender: TObject);
begin
DisableCtrAltDel(False);
end;

Gladiator
یک شنبه 24 آبان 1383, 16:26 عصر
ممنونم آقای کرامتی . :flower:

MiRHaDi
سه شنبه 26 آبان 1383, 23:40 عصر
سلام
بازم میشه بستش ! Kill میکنی با یک برنامه دیگه !
برنامه ای هم که هیچجور نشه بستش رو فقط کافیه حافظش رو خالی کنی بسته میشه
امکانش نیست ! ولی میتونی بگی تا خواست بسته شه یکی دیگه ازش باز شه ( برای اینکه به برنامت رو دست نزند 2 تایی برنامه رو ران کن یکیش تایمر داشته باشه تا اون هست کار نکنه تا رفت بیاد قبل از Create هم اینو بذار که Ram رو نگیره ( اگه خیلی لازم بود ))
یک کار دیگه !‌Hook کن و Message مربوط به Close نذار به برنامت برسه
بای

jirjirakk
چهارشنبه 27 آبان 1383, 00:41 صبح
اقا اینم یک چیز زیرمیزی : اسم فایلت رو بزار winlogon بعدش ببین End Process میشه یا نه :موفق:
من که خودم خیلی وقته این کار رو میکنم × فکر کنم به این دلیل این اتفاق میفته که سرویس winlogon توی پروسس ها هستش و این رو هم فکر میکنه همونه ....

Sepidar
چهارشنبه 27 آبان 1383, 02:01 صبح
ننویسیم:

به هیچ وجه من الوجوح
بنویسیم:
به هیچ وجه من الوجوه :موفق:

Gladiator
چهارشنبه 27 آبان 1383, 08:04 صبح
به هیچ وجه من الوجوه

چشم ٬ شما این یک بار رو ببخشید . من Task Manager رو از روی سرورم قفل کردم و امکان اجرای برنامه های جانبی رو هم از کاربر گرفتم . دیگه مشکلی نیست ٬ فقط کافیه یک سرویس جدید به ویندوز اضافه کنم تا موقع شروع کار ویندوز برنامه من هم اجرا بشه .

متشکرم از همه رفقا . :flower:

vDelphi
چهارشنبه 27 آبان 1383, 17:35 عصر
jirjirak درست میگه!
اسم برنامه ات رو به winlogon.exe یا lssas.exe تغییر بده دیگه از تو task manager هم بسته نمیشه!

مهدی کرامتی
چهارشنبه 27 آبان 1383, 19:50 عصر
کی گفته بسته نمیشه؟

اون برنامه WinLogon.exe که مال خود ویندوز است با Access Right سیستم اجرا میشه، در حالیکه برنامه فرضی شما تحت حقوق دسترسی کاربر جاری اجرا میشود.

vDelphi
چهارشنبه 27 آبان 1383, 21:52 عصر
ولی ظاهرا ویندوز همشونو یه جور میبینه :sunglass:

MiRHaDi
پنج شنبه 28 آبان 1383, 00:38 صبح
سلام
اسمشو بذار NUL , PRN یا AU ببین چی میشه ! :strange:
بای

jirjirakk
پنج شنبه 28 آبان 1383, 23:05 عصر
جناب کرامتی تست کنید میبینید که پروسسش بیرون انداخته نمیشه (EndProcceess نمیشه) و واسه اینکه بسته هم نشه توی OnQueryClose ....

میرهادی جان تشکرات تست میکنم

Mohsen_4194
جمعه 29 آبان 1383, 01:31 صبح
How to kill a process that wouldn't die through the TaskList dialog
1. Locate the process ID (make the "PID" column visible in the task list
2. open a command prompt
3. type "ntsd -p [PID]" without the quotes
4. You've just entered a low level debugger and you'll notice that you are now inside a breakpoint on that process that wouldn't die.
5. type "q" and ENTER to quit the debugger and the process will die along with it.
6. this works for services too.

Mohsen_4194
جمعه 29 آبان 1383, 01:39 صبح
فکر می‌کنم بقیه اش هم جالب باشه.
http://weblogs.asp.net/rosherove/archive/2004/08/21/218212.aspx
با این تفاصیل هنوز هم فکر می‌کنید میشه برنامه صد در صد غیر قابل بستن داشت؟
البته راه آقای میرهادی هم به ذهنم رسید اگه بشه هر دو تا برنامه رو Synchrone نگه داشت به نظر مناسبه.

مهدی کرامتی
جمعه 29 آبان 1383, 12:54 عصر
جناب کرامتی تست کنید میبینید که پروسسش بیرون انداخته نمیشه (EndProcceess نمیشه)
دلیل این امر بنابر دلیل عدم داشتن دسترسی لازم برای بستن پروسس مربوطه که در صفحه قبل توضیح دادم آن است که در لیست پروسس های شما ابتدا WinLogon.exe اصلی قرار دارد و سپس برنامه شما (ترتیب قرار گرفتن پروسس ها در لیست پروسسهای ویندوز بصورت "جدیدترین در انتها" است).

برای تست این موضوع میتوانید در یک حلقه تمام پروسس های دارای نام WinLogon را ببندید. اولی (همانی که دارای نام کاربری System است) بسته نمیشود، اما برنامه شما بسته میشود.

این نکته را نیز در نظر داشته باشید که عدم توانایی بستن پروسس دارای نام WinLogon.exe محدودیتی است که توسط برنامه نویسان مایکروسافت در برنامه Rask Manager ویندوز در نظر گرفته شده است.

برای اثبات این موضوع در ضمیمه این پست یک برنامه که شبیه Task Manager ویندوز است را بهمراه سورس برایتان ضمیمه میکنم. پس از اجرای آن و مرتب کردن لیست پروسس ها بر حسب حروف الفبا سعی کنید برنامه خودتان که دارای نام WinLogon.exe است را توسط آن ببندید. خواهید دید که این کار به راحتی انجام میشود. :)

موفق باشید.

Gladiator
جمعه 29 آبان 1383, 14:31 عصر
من الان یه برنامه صد در صد غیر قابل بستن دارم .

Mohsen_4194
جمعه 29 آبان 1383, 15:59 عصر
ntsd رو روش امتحان کردید؟
البته این برای Win2K است. برای WinXp,Win2003 راههای بسیار ساده تری هم هست.