# Native Code > برنامه نویسی در Delphi > توسعه نرم افزارهای تحت شبکه >  سوال: خاموش کردن یک کامپیوتر از طریق شبکه

## mehdi_7

در یک شبکه دامین، می خواهم روی سرور برنامه ای داشته باشم که بتوان از راه دور، کلاینت ها را خاموش و یا ری استارت کنم.
برای خاموش کردن سیستم، از طریق داس می توان از دستور زیر استفاده کرد
shutdown /m \\computerName -s
اما می خواهم از طریق دلفی و برنامه تحت ویندوز این کار را انجام دهم.
لطفا راهنمایی کنید چگونه می توان همچین برنامه نوشت

----------


## Felony

هم میتونید یک برنامه ی میزبان روی کلاینتها بنویسید تا به درخواست شما سیستم رو خاموش کنه ، هم میتونید همین دستور تحت داس رو با دلفی توسط تابع ShellExecute از یونیت ShellAPI صدا بزنید .

----------


## mehdi_7

برای خاموش کردن سیستم از این دستور استفاده کردم و جواب داد


ShellExecute(Handle, 'open', 'shutdown', '-s', '', SW_SHOWNORMAL);


اما اگر بخواهم بیش از یک پارامتر ارسال کم، به چه صورتی هست. مثلا این دستور را


shutdown /m \\computerName -s


و سوال بعدی اینکه چگونه نام کلاینت های موجود در شبکه را تشخیص بدهم. مثلا یک combobox داریم و نام کامپیوترهای موجود در شبکه (دامین) ، در آن نمایش داده می شود.

----------


## MohsenTi

دستور Winexec هم هست که میشه به صورت زیر استفاده کرد
WinExec('shutdown /m \\computerName -s',SW_HIDE)
که دیگه پنجره ای هم نشون داده نمیشه
اگه بخواید پنچره ای نشون داده بشه هم میشه به جای SW_HIDE از SW_SHOW استفاده کنید.

----------


## Mask

> دستور Winexec هم هست که میشه به صورت زیر استفاده کرد
> کد:
> WinExec('shutdown /m \\computerName -s',SW_HIDE)
> که دیگه پنجره ای هم نشون داده نمیشه
> اگه بخواید پنچره ای نشون داده بشه هم میشه به جای SW_HIDE از SW_SHOW استفاده کنید. 
> [IMG]file:///C:/Documents%20and%20Settings/HA/Desktop/سوال%20خاموش%20کردن%20یک%20کامپ  یوتر%20از%20طریق%20شبکه%20-%20جامعه%20برنامه%20نویس_files/user_offline.gif[/IMG] [IMG]file:///C:/Documents%20and%20Settings/HA/Desktop/سوال%20خاموش%20کردن%20یک%20کامپ  یوتر%20از%20طریق%20شبکه%20-%20جامعه%20برنامه%20نویس_files/report.gif[/IMG]


من موندم اصلا این دستور حتی داخل cmd کار نمی کنه.
چطوری داخل برنامه می خاهید از این استفاده کنید.
shutdown /m \\computerName -s

----------


## hossein_h62

> دستور Winexec هم هست که میشه به صورت زیر استفاده کرد
> WinExec('shutdown /m \\computerName -s',SW_HIDE)
> که دیگه پنجره ای هم نشون داده نمیشه
> اگه بخواید پنچره ای نشون داده بشه هم میشه به جای SW_HIDE از SW_SHOW استفاده کنید.


فکر میکنم شکل صحیح این دستور بصورت زیر باشه!!
 
Shutdown -s -m \\ComputerName -f

----------


## Mask

> فکر میکنم شکل صحیح این دستور بصورت زیر باشه!!
> 
> 
> کد:
> Shutdown -s -m \\ComputerName -f


دوست عزیز این دستور اصلا کار نمیده.
پیغام Accec denide میده.

----------


## Felony

> دوست عزیز این دستور اصلا کار نمیده.
> پیغام Accec denide میده.


 :لبخند گشاده!: خوب خودتون میگید پیغام Access denide میده ، حتما دسترسی لازم رو ندارید دیگه !

----------


## hossein_h62

> دوست عزیز این دستور اصلا کار نمیده.
> پیغام Accec denide میده.


جناب Silver Soft درست میگن.دستور درسته.ولی بدیهی که وقتی limit user  باشی و دسترسی نداشته باشی این پیغام رو خواهد داد.

----------


## Mask

> ولی بدیهی که وقتی limit user باشی و دسترسی نداشته باشی این پیغام رو خواهد داد.


دوست عزیز بنده دسترسی ادمین دارم.
آقا مجتبی ما نفهمیدیم این مجوز دسترسی چیه؟
هر کاری که تو شبکه می خاهیم انجام بدیم و نمیشه شما می گی مجوز.
این مجوز رو باید از کی یا کجا گرفت(لطفا کامل بگید)؟
ممنون.

----------


## hossein_h62

> این مجوز رو باید از کی یا کجا گرفت(لطفا کامل بگید)؟
> ممنون.


ادمین که باید باشید دوست عزیز.
مشکل  میتونه مال فایروال سیستما باشه.
یا اینکه برید توی Group Policy و در قسمت User Rights Assignment روی گزینه Shutdown System  دابل کلیک کنید و EveryOne رو به یوزراتون اضافه کنید.احتمالن جواب بده.

----------


## mohammadss20007

نه آقاجون firewall کدومه .چی داری می گی!!!!  مشکل بخاطر اینه که گزینه remote registery کامپیوتر مقصد diable هست .برای فعال کردنش تو run بزن services.msc تو صفحه باز شده رو remote registery راست کلیک کن و start رو بزن."این کار باید تو کامپیوتر مقصد انجام بشه" همین

----------

