PDA

View Full Version : سوال: جلوگیری از تغییر تاریخ و ساعت سیستم



ferazaan
شنبه 29 مهر 1396, 15:37 عصر
با سلام.
از اونجایی که من اینجا تازه وارد هستم ،پیشاپیش چنانچه قواعدی رو رعایت نکردم عذر میخوام.

من دارم یه برنامه با #C مینویسم که فوق العاده برام مهمه که کاربر نتونه ساعت سیستم رو تغییر بده . پیشنهاد شما دوستان چیه؟ نکته اینکه نمیتونم اکانت محدود به کاربر بدم و از طریق permission های ویندوز مانع از تغییر ساعت سیستم بشم. راهی که خودم به ذهنم رسید این بود که توسط یه تایمر ساعت و تاریخ سیستم رو با آخرین تاریخ و ساعت صحیحِ ذخیره مقایسه کنم و اگر درست نبود خود برنامه ساعت سیستم رو تنظیم کنه. اما هرچقدر گشتم راهشو پیدا نکردم (چندتایی کد یافتم که جواب نداد) . ممنون میشم اگه راهنماییم کنید .

danialafshari
شنبه 29 مهر 1396, 18:12 عصر
با سلام
روش خاصی به ذهنم نمیرسه
ولی توی ایدتون می تونم کمک کنم
برای تشخیص دادن اینکه Time سیستم عوض شده یک اونت هست در Microsoft.Win32.SystemEvents.TimeChanged که میتونید ازش استفاده کنید به شکل زیر:

private void timer1_Tick(object sender, EventArgs e)
{
Microsoft.Win32.SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);
}
void SystemEvents_TimeChanged(object sender, EventArgs e)
{
MessageBox.Show("Time Changed!");
}

برای تنظیم ساعت هم میتونید از این کد استفاده کنید:

using System.Runtime.InteropServices;


[StructLayout(LayoutKind.Sequential)]
public struct SYSTEMTIME
{
public short wYear;
public short wMonth;
public short wDayOfWeek;
public short wDay;
public short wHour;
public short wMinute;
public short wSecond;
public short wMilliseconds;
}

[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool SetSystemTime(ref SYSTEMTIME st);

private void button1_Click(object sender, EventArgs e)
{
SYSTEMTIME st = new SYSTEMTIME();
st.wYear = 2009; // must be short
st.wMonth = 1;
st.wDay = 1;
st.wHour = 0;
st.wMinute = 0;
st.wSecond = 0;

SetSystemTime(ref st);
}

موفق باشید

رامین مرادی
یک شنبه 30 مهر 1396, 08:36 صبح
اگه به نت دسترسی دارید میتونید با ساعت جهانی هم مقایسه کنید و +ناحیه زمانی کنید و ساعت رو بررسی کنید. البته تو ایونتی که اقای افشاری دادن. و اگه ساعت درست نبود با روش دوم ایشون ساعت رو بروزرسانی کنید.