نمایش نتایج: از شماره 1 تا 13 از مجموع 13
سپاس ها 60سپاس
  • 3 توسط mahyar49
  • 34 توسط Hakimi
  • 1 توسط Hakimi
  • 4 توسط Hakimi
  • 1 توسط Hakimi
  • 3 توسط Hakimi
  • 11 توسط th95

موضوع: اختلاف زمانی 1 ساعته کلاینت ها - مشکل Time Zone ایران

  
  1. #1
    نام حقيقي: +++AnathemA+++

    عضو ویژه شناسه تصویری mahyar49
    تاریخ عضویت
    May 2009
    محل سکونت
    021
    نوشته
    913
    سپاسگزاری شده
    879
    سپاسگزاری کرده
    673

    اختلاف زمانی 1 ساعته کلاینت ها - مشکل Time Zone ایران

    سلام
    دو روزی هست که تعدادی از سیستم های شبکه ما ساعتشون یک ساعت جلوتر از ساعت سرور است...
    جالب اینجاست که همه ی سیستم ها اینطوری نیستن فقط چندتاشون اینطوری هستن...
    وقتی تیک automatically adjust clock... رو در قسمت data and time properties بر می دارم درست میشه اما نمی خوام واسه یه سری ها رو تیک رو بردارم واسه کسایی که ساعتشون با سرور تنظیم هست رو برندارم...
    خود سرور این قسمت تیک خورده...
    تعداد سیستم ها هم زیاده و نمی تونم تک تک برم و تیک رو بردارم...

    لطفا دوستانی که اطلاع دارند راهنمایی کنند
    با تشکر



    موضوعات مشابه:
    aqfery، vs20 و shadan سپاسگزاری کرده‌اند.





  2. #2
    نام حقيقي: محمد حکیمی

    Administrator شناسه تصویری Hakimi
    تاریخ عضویت
    Dec 2002
    محل سکونت
    تهران
    نوشته
    6,540
    سپاسگزاری شده
    6757
    سپاسگزاری کرده
    1029
    نوشته های وبلاگ
    4
    این مشکلی است که از دو روز پیش بوجود آمده است.
    اتفاقی که افتاده این است که در Windows XP، تنظیمات Time Zone درست نیست و برای DTS، ساعت دو هفته زودتر جابجا شده است. (به جای اول فروردین!)

    قبل از هرچیز می بایست تاکید کنم که به هیچ وجه به ساعت سرور دست نزنید و اقدام به عقب و جلو کردن زمان نکنید. زمان می بایست با یک منبع معتبر مانند time.nist.gov همخوانی داشته باشد.

    برای رفع مشکل، می بایست Time Zone ایران به گونه ای ویرایش شود که زمان تغییر ساعت بر مبنای DTS، به اول فروردین منتقل شود.

    مراحل کار:
    1- درست کردن اطلاعات Time Zone در Registry:
    کد زیر را در یک فایل با پسوند .reg ذخیره کنید و روی سیستم مورد نظر آن را اجرا کنید: (TZupdate.reg)

    کد:
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Iran Standard Time]
    "Display"="(GMT+03:30) Tehran"
    "Dlt"="Iran Daylight Time"
    "Std"="Iran Standard Time"
    "MapID"="-1,72"
    "Index"=dword:000000a0
    "TZI"=hex:2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,01,00,04,00,17,00,3b,\
      00,3b,00,e7,03,00,00,03,00,04,00,03,00,17,00,3b,00,3b,00,e7,03
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Iran Standard Time\Dynamic DST]
    "FirstEntry"=dword:000007d5
    "LastEntry"=dword:000007da
    "2005"=hex:2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,02,00,04,00,02,00,\
      00,00,00,00,00,00,00,00,03,00,00,00,01,00,02,00,00,00,00,00,00,00
    "2006"=hex:2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,\
      00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
    "2007"=hex:2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,\
      00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
    "2008"=hex:2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,01,00,04,00,17,00,\
      3b,00,3b,00,e7,03,00,00,03,00,04,00,03,00,17,00,3b,00,3b,00,e7,03
    "2009"=hex:2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,02,00,04,00,17,00,\
      3b,00,3b,00,e7,03,00,00,03,00,05,00,03,00,17,00,3b,00,3b,00,e7,03
    "2010"=hex:2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,03,00,04,00,17,00,\
      3b,00,3b,00,e7,03,00,00,03,00,06,00,03,00,17,00,3b,00,3b,00,e7,03

    2- بازخوانی کردن تنظیمات از Registry
    اگر دستی این کار را انجام می دهید، می بایست پنجره تنظیم ساعت را باز کنید، تیک Automatically adjust ... را یک بار بردارید و Apply کنید، مجددا بگذارید و Apply کنید تا اطلاعات دوباره از Registry خوانده شود و مشکل برطرف شود.
    این کار را می توانید با یک اسکریپت هم انجام دهید.
    کد زیر را در یک فایل با پسوند .vbs ذخیره کنید و روی سیستم مورد نظر آن را اجرا کنید: (refreshTZinfo.vbs)

    کد:
    Set objSh = CreateObject("WScript.Shell")
    
    'Get the StandardName key of the current time zone
    szStandardName = objSh.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\StandardName")
    
    'Enumerate the subkeys in the time zone database
    const HKEY_LOCAL_MACHINE = &H80000002
    Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    szTzsKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones"
    objReg.EnumKey HKEY_LOCAL_MACHINE, szTzsKeyPath, arrTzSubKeys
    
    'Step through the time zones to find the matching Standard Name
    szTzKey = ""
    For Each subkey In arrTzSubKeys
        If (objSh.RegRead("HKLM\" & szTzsKeyPath & "\" & subkey & "\Std") = szStandardName) Then
            'Found matching StandardName, now store this time zone key name
            szTzKey = subkey
        End If
    Next 
    
    If szTzKey = "" Then
           'Write entry to the Application event log stating that the update has failed to execute
           objSh.LogEvent 1, "DST 2007 Registry Update and Refresh failed to execute on this computer.  Time zones failed to enumerate properly or matching time zone not found."
           Wscript.Quit 0
    End If
    
    Dim process, processid, result, strUpdateCommand
    Set process = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2:Win32_process")
    
    'Add time change privilege to the process object
    process.Security_.Privileges.AddAsString "SeSystemTimePrivilege",True
    strUpdateCommand = "control.exe timedate.cpl,,/Z" & szTzKey
    
    'Launch control.exe to refresh time zone information using the TZ key name obtained above 
    result = process.create(strUpdateCommand,Null,Null,processid)
    If result <> 0 Then
        objSh.LogEvent 1, "IRAN DST 2010 Registry Update and Refresh failed to execute on this computer.  Unable to refresh the Timezone database."
        Wscript.Quit 0
    End If
    
    'Get current display name of refreshed time zone
    szCurrDispName = objSh.RegRead("HKLM\" & szTzsKeyPath & "\" & szTzKey & "\Display")
    
    'Write entry to the Application event log stating that the update has executed
    objSh.LogEvent 4, "IRAN DST 2010 Registry Update and Refresh has been executed on this computer." & chr(13) & chr(10) & chr(13) & chr(10) & "Current time zone is: " & szCurrDispName & "."

    حال اگر می خواهید این تغییر را با استفاده از Group Policy بر روی همه سیستم های شبکه اعمال کنید، می توانید با استفاده از یک Batch File، دو فایل قبل را فراخوانی کنید و این Batch فایل را با استفاده از Startup Script روی سیستم های مورد نظر Publish کنید. لازم به توضیح نیست که در این Batch فایل، می بایست مسیر درست به فایل ها درج شده باشد.

    نمونه Batch File: (TZUpdate.cmd)
    کد:
    @echo off
    regedit /s \\domain.com\NETLOGON\...\TZupdate.reg
    cscript \\domain.com\NETLOGON\...\refreshTZinfo.vbs



    SADEGH65، aliahvaz، ARM و 31 نفر دیگر سپاسگزاری کرده‌اند.
    محمد حکیمی
    hakimi [a t] gmail.com

  3. #3
    نام حقيقي: Mohammad

    عضو ویژه شناسه تصویری th95
    تاریخ عضویت
    Sep 2008
    نوشته
    4,263
    سپاسگزاری شده
    5758
    سپاسگزاری کرده
    2674
    نوشته های وبلاگ
    20
    سلام
    من به دلیلی مجبور شدم تیک مربوطه رو بردارم و این اتفاق باید روی همه کلاینتها بیفته
    انجام این کار یعنی برداشتن اون تیک با یک کلید ساده رجیستری امکان پذیره
    اما جالب اینه که بعد از این قضیه حتما باید رفت تو برگه Time Zone و بدون اینکه لازم به تغییری باشه فقط یکبار OK کرد
    اسکریپتی حرکتی برای حل این موضوع هست ؟



  4. #4
    نام حقيقي: محمد حکیمی

    Administrator شناسه تصویری Hakimi
    تاریخ عضویت
    Dec 2002
    محل سکونت
    تهران
    نوشته
    6,540
    سپاسگزاری شده
    6757
    سپاسگزاری کرده
    1029
    نوشته های وبلاگ
    4
    احتمالا قسمت دوم پست قبلی را ندیدید
    refreshTZinfo.vbs


    vs20 سپاسگزاری کرده است.
    محمد حکیمی
    hakimi [a t] gmail.com

  5. #5
    نام حقيقي: Mohammad

    عضو ویژه شناسه تصویری th95
    تاریخ عضویت
    Sep 2008
    نوشته
    4,263
    سپاسگزاری شده
    5758
    سپاسگزاری کرده
    2674
    نوشته های وبلاگ
    20
    ممنون محمد جان
    اون رو دیدم و تست کردم
    نتیجه نهایی اون زده شدن تیک هست و من دقیقا بر عکس رو میخوام
    یعنی با اون کلید تیک رو برداشتم اما حالا حتما باید یک بار بریم تو time zone و بدون هیچ کاری فقط ok رو بزنیم تا زمان درست بشه و یک ساعت برگرده عقب



  6. #6
    نام حقيقي: محمد حکیمی

    Administrator شناسه تصویری Hakimi
    تاریخ عضویت
    Dec 2002
    محل سکونت
    تهران
    نوشته
    6,540
    سپاسگزاری شده
    6757
    سپاسگزاری کرده
    1029
    نوشته های وبلاگ
    4
    محمد جان
    اسکریپت شماره 2 را بخوان. هیچ مقداری در آن Set نمی شود.
    این اسکریپت دو کار انجام می دهد. اول Timezone ها را بازخوانی می کند و سپس تنظیمات Time را Refresh می کند. این کار را با اجرای دستور control.exe timedate.cpl,,/Z انجام می شود. و در نهایت هم در Event Log ثبت می کند.

    این که شما پس از اجرا کردن این اسکریپت می بینی که تیک می خورد، بخاطر این است که در تنظیمات Time Zone، تغییر مورد نیاز برای حذف DST از Time Zone ایران را انجام نداده ای. در نتیجه هربار که Time Zone ها Refresh شوند، تنظیمات را می خواند و دوباره DST فعال می شود.

    برای این که DST غیر فعال شود، می بایست این تغییر در Time Zone اعمال شود.
    برای تغییر Time Zone باید از روشی که در Script شماره 1 می بینی استفاده کنی. برای انجام این تنظیم می توانی از ابزار TZEdit.exe استفاده کنی که از لینک زیر قابل دریافت است:
    How to configure daylight saving time for Microsoft Windows operating systems

    پیروز باشی


    th95، f14f21، itpirooz و 1 نفر دیگر سپاسگزاری کرده‌اند.
    محمد حکیمی
    hakimi [a t] gmail.com





  7. #7
    نام حقيقي: Mohammad

    عضو ویژه شناسه تصویری th95
    تاریخ عضویت
    Sep 2008
    نوشته
    4,263
    سپاسگزاری شده
    5758
    سپاسگزاری کرده
    2674
    نوشته های وبلاگ
    20
    خوب بسیار عالی
    حالا دو نکته
    اولا که خوب با یک فایل Reg خیلی ساده و تنظیم یک پارامتر میشه اون تیک رو برداشت
    حالا اگر یک اسکریپتی هم بود که یکبار میرفت اون Apply Ok رو میزد قضیه حل بود

    Windows Registry Editor Version 5.00
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\TimeZoneInformation]
    "DisableAutoDaylightTimeSet"=dword:00000001

    و اما توضیحات خوب شما

    این که شما پس از اجرا کردن این اسکریپت می بینی که تیک می خورد، بخاطر این است که در تنظیمات Time Zone، تغییر مورد نیاز برای حذف DST از Time Zone ایران را انجام نداده ای.
    رای این که DST غیر فعال شود، می بایست این تغییر در Time Zone اعمال شود.
    برای تغییر Time Zone باید از روشی که در Script شماره 1 می بینی استفاده کنی
    این قسمت رو اگر بد متوجه شدم و اشتباه میگم اصلاح بفرمایید
    شما میفرمایید باید در تنظیمات کاری کنیم که DST برای Iran Time Zone برداشته بشه وبعد با اسکریپت دوم یک Refresh بکنیم

    اما اسکریپت اول این کار رو انجام نمیده (برداشت DST برای ایران) بلکه یک تغییر Offset در اون میده
    بنابراین برای برداشتن این تیک برای ایران باید برم سراغ اون ابزار Tzedit و از اون کمک بگیرم تا یک خروجی reg احتمالا بده که تیک رو برای ایران برمیداره و اسکریپت دوم هم پشت سرش اجرا میشه که Refresh میکنه و ..

    شرمنده اگر بد متوجه شدم و ممنون از اینکه تکمیلش خواهید کرد



  8. #8
    نام حقيقي: محمد حکیمی

    Administrator شناسه تصویری Hakimi
    تاریخ عضویت
    Dec 2002
    محل سکونت
    تهران
    نوشته
    6,540
    سپاسگزاری شده
    6757
    سپاسگزاری کرده
    1029
    نوشته های وبلاگ
    4
    کاملا درسته. با TZEdit تنظیم مورد نظر رو تعریف می کنی و بقیه ماجرا.


    th95 سپاسگزاری کرده است.
    محمد حکیمی
    hakimi [a t] gmail.com

  9. #9
    نام حقيقي: Mohammad

    عضو ویژه شناسه تصویری th95
    تاریخ عضویت
    Sep 2008
    نوشته
    4,263
    سپاسگزاری شده
    5758
    سپاسگزاری کرده
    2674
    نوشته های وبلاگ
    20
    ممنون عزیز
    تست میکنم خبر میدم

    ولی کلا رو اعصابمه که چرا اینجوریه
    تنظیم انجام میشه فقط یکبار باید پنجره رو باز کرد و Ok کرد. حتی نیازی به Apply و تغییر و برگردوندن و .. هم نداره
    فقط پنجره باز بشه و OK

    ریست کردم نشد
    سرویس W32Time رو هم استارت استاپ کردم نشد

    جالبه فقط پنجره باز بشه ok بشه (بدون هیچ تغییری)



  10. #10
    نام حقيقي: محمد حکیمی

    Administrator شناسه تصویری Hakimi
    تاریخ عضویت
    Dec 2002
    محل سکونت
    تهران
    نوشته
    6,540
    سپاسگزاری شده
    6757
    سپاسگزاری کرده
    1029
    نوشته های وبلاگ
    4
    موضوع این است که شما فقط Interface را تغییر داده ای. آن مقداری که در Registry تغییر داده ای فقط مربوط به ظاهر ماجراست.
    وقتی یکبار پنجره را باز می کنی و OK می کنی، Function مربوطه بر اساس تیکی که برداشته شده، تنظیمات مربوطه را در Registry انجام می دهد. می توانی با Registry Monitor ببینی که با OK کردن آن پنجره چه حجمی از تغییرات در Registry اعمال می شود.

    بعید می دانم در هیچ مستند معتبری روش غیر فعال کردن DST را تغییر آن کلید Registry (که شما تغییر دادی) اعلام کرده باشد. حدس می زنم با سعی و خطا و حدس و گمان به تغییر آن کلید رسیده ای که اشتباه است.


    محمد حکیمی
    hakimi [a t] gmail.com

  11. #11
    نام حقيقي: Mohammad

    عضو ویژه شناسه تصویری th95
    تاریخ عضویت
    Sep 2008
    نوشته
    4,263
    سپاسگزاری شده
    5758
    سپاسگزاری کرده
    2674
    نوشته های وبلاگ
    20
    منظور شما رو از سعی و خطا و ... نگرفتم
    وا.. مایکروسافت گفته بود میخوای اون تیک برداشته بشه برو سراغ این کلید که واقعا هم به درستی کار میکنه ولی یک Apply پشتش کمه
    یعنی کارش اینه که اون تیک رو بزنه یا برداره

    DisableAutoDaylightTimeSet


    جالبه

    خوب ظاهرا این باید مشکل رو حل کنه
    تست کنم نتیجه رو اعلام میکنم
    Set objSh = CreateObject("WScript.Shell")

    'Get the StandardName key of the current time zone
    szStandardName = objSh.RegRead("HKLM\SYSTEM\CurrentControlSet\Control
    \TimeZoneInformation\StandardName")

    'Enumerate the subkeys in the time zone database
    const HKEY_LOCAL_MACHINE = &H80000002
    Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.
    \root\default:StdRegProv")
    szTzsKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time
    Zones"
    objReg.EnumKey HKEY_LOCAL_MACHINE, szTzsKeyPath, arrTzSubKeys

    'Step through the time zones to find the matching Standard Name
    szTzKey = ""
    For Each subkey In arrTzSubKeys
    If (objSh.RegRead("HKLM\" & szTzsKeyPath & "\" & subkey & "\Std")
    = szStandardName) Then
    'Found matching StandardName, now store this time zone key
    name
    szTzKey = subkey
    End If
    Next

    If szTzKey = "" Then
    'Write entry to the Application event log stating that the
    update has failed to execute
    objSh.LogEvent 1, "DST 2007 Registry Update and Refresh failed
    to execute on this computer. Time zones failed to enumerate properly
    or matching time zone not found."
    Wscript.Quit 0
    End If

    'Launch control.exe to refresh time zone information using the TZ key
    name obtained above
    objSh.Run "control.exe timedate.cpl,,/Z" & szTzKey

    'Get current display name of refreshed time zone
    szCurrDispName = objSh.RegRead("HKLM\" & szTzsKeyPath & "\" & szTzKey
    & "\Display")

    'Write entry to the Application event log stating that the update has
    executed
    objSh.LogEvent 4, "DST 2007 Registry Update and Refresh has been
    executed on this computer." & chr(13) & chr(10) & chr(13) & chr(10) &
    "Current time zone is: " & szCurrDispName & "."

    البته در خصوص چند خط اول کاملا حق با شماست



  12. #12
    نام حقيقي: محمد حکیمی

    Administrator شناسه تصویری Hakimi
    تاریخ عضویت
    Dec 2002
    محل سکونت
    تهران
    نوشته
    6,540
    سپاسگزاری شده
    6757
    سپاسگزاری کرده
    1029
    نوشته های وبلاگ
    4
    نقل قول نوشته اصلی توسط mhdganji نمایش پست ها
    منظور شما رو از سعی و خطا و ... نگرفتم
    وا.. مایکروسافت گفته بود میخوای اون تیک برداشته بشه برو سراغ این کلید که واقعا هم به درستی کار میکنه ولی یک Apply پشتش کمه
    یعنی کارش اینه که اون تیک رو بزنه یا برداره

    DisableAutoDaylightTimeSet
    من نمی دانستم Microsoft این را اعلام کرده. البته این Document اشاره کرده که مربوط به Vista است. ولی روی XP و 2003 که مطمئن هستم این نمی تواند کار کند.


    mosshi، boy_villag و vs20 سپاسگزاری کرده‌اند.
    محمد حکیمی
    hakimi [a t] gmail.com





  13. #13
    نام حقيقي: Mohammad

    عضو ویژه شناسه تصویری th95
    تاریخ عضویت
    Sep 2008
    نوشته
    4,263
    سپاسگزاری شده
    5758
    سپاسگزاری کرده
    2674
    نوشته های وبلاگ
    20
    خوب بسیار هم عالی
    با یک ایده ساده ولی هوشمندانه که یک بنده خدایی در سایت ComputerAdvisor نوشته بود مشکل حل شد
    کافی بود بعد از این تغییر Time Zone را به منطقه دیگری تغییر دهیم و مجددا به ایران برگردانیم.
    در واقع کل اسکریپت این سه خط شد

    reg.exe add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInfo rmation /f /v DisableAutoDaylightTimeSet /t REG_DWORD /d 1



    TZCHANGE.exe /C "Middle East Standard Time"
    TZCHANGE.exe /C "Iran Standard Time"



    Hakimi، SADEGH65، ARM و 8 نفر دیگر سپاسگزاری کرده‌اند.

کلمات کلیدی در جستجوها:

   مشکل اختلاف time zone iran

تایم زون چیست

zone ایران

تایم زون ایران

چگونه time zone را تغییر دهیمتغییر ساعت کلاینت persian networks automatically adjust clocktime zone ایرانتنظیم اختلاف ساعت دامین باکلاینتبه روز شدن ساعت با دستود tzeditاختلاف ساعت ایران با gmttime zoneایران نیست رایانه time zone 5 روز زودترتغییر ساعت کلاینتها در شبکهتنظیم ساعت کلاینت با سروراختلاف زمانیمشکل timezonetimezone ایرانtime zone bat file for startup persian time in win 2003 serverغیر فعال کردن time zoneدرست کردن time zone windowsشماره zone ایرانzone و dst ایران کدام استچگونه از طریق پالیسی ساعت سیستمها را در دومین تغییر دهیم؟رفع مشکل ساعت ویندوز ایران

برچسب برای این موضوع

مجوز های ارسال و ویرایش

  • شما نمی توانید موضوع جدید ارسال کنید
  • شما نمی توانید به پست ها پاسخ دهید
  • شما نمی توانید فایل پیوست ضمیمه کنید
  • شما نمی توانید پست های خود را ویرایش کنید
  •