Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


mikola1983
Цитата:
конкретно интересует кусок кода либо команда переименования
уже обсуждалось: [решено] Переименование рабочих станций в домене

ALL
Думаю не все знают, что у ключей реестра (не путать с параметрами) как и у файлов есть своя метка времени последней модификации, стандартные утилиты ее не показывают но иногда возникает необходимость узнать когда создали/изменили тот или иной ключ... для этого случая сваял UDF, дата возвращается в формате: YYYY/MM/DD HH:MM:SS:
Код: Выделить весь код
Global Const $HKCR = 0x80000000
Global Const $HKCU = 0x80000001
Global Const $HKLM = 0x80000002
Global Const $HKU  = 0x80000003
Global Const $HKCC = 0x80000005

Func RegGetTimeStamp($iRegHive, $sRegKey)
    Local $sRes='', $aRet, $hReg = DllStructCreate("int")
    Local $FILETIME = DllStructCreate("dword;dword")
    Local $SYSTEMTIME1 = DllStructCreate("ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort")
    Local $SYSTEMTIME2 = DllStructCreate("ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort")
    Local $hAdvAPI=DllOpen('advapi32.dll'), $hKernel=DllOpen('kernel32.dll')
    If $hAdvAPI=-1 Or $hKernel=-1 Then Return SetError(1, $aRet[0], 'DLL Open Error!')
    $aRet = DllCall("advapi32.dll", "int", "RegOpenKeyEx", _
        "int", $iRegHive, "str", $sRegKey, _
        "int", 0, "int", 0x20019, _
        "ptr", DllStructGetPtr($hReg))
    If $aRet[0] Then Return SetError(2, $aRet[0], 'Registry Key Open Error!')
    $aRet = DllCall("advapi32.dll", "int", "RegQueryInfoKey", _
        "int", DllStructGetData($hReg,1), _
        "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, _
        "ptr", DllStructGetPtr($FILETIME))
    If $aRet[0] Then Return SetError(3, $aRet[0], 'Registry Key Query Error!')
    $aRet = DllCall("advapi32.dll", "int", "RegCloseKey", _
        "int", DllStructGetData($hReg,1))
    If $aRet[0] Then Return SetError(4, $aRet[0], 'Registry Key Close Error!')
    $aRet = DllCall("kernel32.dll", "int", "FileTimeToSystemTime", _
        "ptr", DllStructGetPtr($FILETIME), _
        "ptr", DllStructGetPtr($SYSTEMTIME1))
    If $aRet[0]=0 Then Return SetError(5, 0, 'Time Convert Error!')
    $aRet = DllCall("kernel32.dll", "int", "SystemTimeToTzSpecificLocalTime", _
        "ptr", 0, _
        "ptr", DllStructGetPtr($SYSTEMTIME1), _
        "ptr", DllStructGetPtr($SYSTEMTIME2))
    If $aRet[0]=0 Then Return SetError(5, 0, 'Time Convert Error!')
    $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,1)) &'/'
     $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,2)) &'/'
     $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,4)) &' '
     $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,5)) &':'
     $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,6)) &':'
     $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,7))
    Return $sRes
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:26, 12-10-2007 | #590