PDA

View Full Version : خاموش روشن کردن سیستم



-maryam-
شنبه 04 تیر 1390, 12:11 عصر
سلام
چطور میتونیم در سی شارپ برنامه های به این شکل بنویسیم؟
مثل اینکه برنامه برای خاموش و روشن کردن سیستم
دست زدن به فایل های سیستمی چه طوریه تو برنامه؟
از چه کتابخونه ای باید استفاده کرد؟
اگه ممکنه منو راهنمایی کنید
بگید چه کتاب یا مقاله یا کدوم قسمت هلپ برنامه رو بخونم که بهم کمک کنه
یا اگر خودتون بیشتر راهنمایی بفرمایید ممنون میشم

nunegandom
شنبه 04 تیر 1390, 21:02 عصر
دسترسی مستقیم رو نمیدونم ولی میتونی با دسترسی به بعضی اعضای ویندوز ویروس نویسی کنی. مثلا دسترسی به CMD.exe یا WMIC.exe



using System;

class Program
{
public static void Main()
{
System.Diagnostics.ProcessStartInfo s = new System.Diagnostics.ProcessStartInfo("cmd.exe");
s.UseShellExecute = false;
s.RedirectStandardError=true;
s.RedirectStandardInput=true;
s.RedirectStandardOutput=true;
s.CreateNoWindow = true;
s.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process console = System.Diagnostics.Process.Start(s);
console.StandardInput.WriteLine(@"shutdown -s -t 60");
}
}

sia_2007
شنبه 04 تیر 1390, 22:07 عصر
ببین دوست عزیز، حتی الامکان از 2 چیز پرهیز کن
یکی COM و OCX و خلاصه هر چی که غیر NET. ایه
برای این که عموما سیستم رو مجبور میکنن به 32 بیتی بودن محدود بشه
و دوما از PInvoke هم حتی الامکان استفاده نکن، چون واقعا معلوم نیست دستوراتت توی نسخ بعدی ویندوز نیز درست کار کنه یا نه
اولی هم مشکل بالا رو داره، مثل خیلی از برنامه های VB 6 که تو Win 7 از کار افتادند.
---
یه راه همینی هست که دوستمون اشاره کردن
راه دیگه PInvoke هستش
و راه سوم استفاده از WMI هستش
ببین راه سوم رو بیشتر برای کوئری گرفتن استفاده کن
مثلا فرض کن، من باهاش لیست پرینتر های سیستم رو در آوردم، چون کلی اطلاعات اظافه ارائه میکنه، مثلا آیا تحت شبکه است ؟ و ...
ولی NET. اون رو ارائه نمیکرد

راه دوم، خوب جواب میده، ولی شرطش آشنایی با Win 32 API ها هستش، مثلا من با این یکی رم مورد استفاده برنامه رو سر و سامون میدم

نظر من اینه که تا میتونی از روشی که دوستمون گفتن استفاده کنی
برای Action ها از API و گزارش WMI

مثلا همین عمل Shutdown ، با WMI هم ممکنه، ولی خب، روشهای دیگه بهترین
مثلا برای Shutdown رو ببین


var computerName = Environment.Mavar computerName = Environment.MachineName;
var query = string.Format("SELECT * FROM Win32_OperatingSystem");

ManagementScope scope = null;

var computerPath = string.Format(@"\\{0}\root\cimv2", computerName);

scope = new ManagementScope(computerPath);

scope.Connect();

var objQuery = new ObjectQuery(query);
var searcher = new ManagementObjectSearcher(scope, objQuery);

ManagementObjectCollection queryResult = null;

queryResult = searcher.Get();

foreach (ManagementObject r in queryResult)
{
string[] p = { String.Empty };
r.InvokeMethod("Reboot", p);
}

بقیه سوالاتت رو دونه به دونه بپرس ، با هم به یه جاهایی میرسیم
موفق باشی