View Full Version : غیر فعال کردن safe mod
  
حسین علوی
سه شنبه 24 مرداد 1391, 03:50 صبح
سلام خدمت تمام دوستان
برای غیر فعال کردن Safe mod در ویندوز xp از کدام قسمت ریجیستری باید استفاده کرد؟
butterfly8528
سه شنبه 24 مرداد 1391, 06:08 صبح
سلام دوست عزيز .
به مسير زير بريد و كليد هاي  Minimal و Network رو به  Minimal- و Network- تغيير بديد .
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\SafeBoot
حالا از فردا تمام ويروس ها safe mode رو غير فعال مي كنن :افسرده:
موفق باشيد .
حسین علوی
سه شنبه 24 مرداد 1391, 09:10 صبح
سلام دوست عزيز .
به مسير زير بريد و كليد هاي  Minimal و Network رو به  Minimal- و Network- تغيير بديد .
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\SafeBoot
حالا از فردا تمام ويروس ها safe mode رو غير فعال مي كنن :افسرده:
موفق باشيد .
با تشکر از شما
برای rename  کردن یک کلید در ریجیستری چگونه باید عمل کرد؟(اگر یک نمونه کد بزارین ممنون میشم)
ali-a2
سه شنبه 24 مرداد 1391, 13:51 عصر
برای Rename کردن کد زیر را در یک ماژول قرار دهید !
 Option Explicit
  
  Private Type FILETIME
          dwLowDateTime As Long
          dwHighDateTime As Long
  End Type
  
  Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
  Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As Any, phkResult As Long, lpdwDisposition As Long) As Long
  Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
  Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
  Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
  Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
  
  Private Const HKEY_CLASSES_ROOT = &H80000000
  Private Const HKEY_CURRENT_CONFIG = &H80000005
  Private Const HKEY_CURRENT_USER = &H80000001
  Private Const HKEY_DYN_DATA = &H80000006
  Private Const HKEY_LOCAL_MACHINE = &H80000002
  Private Const HKEY_PERFORMANCE_DATA = &H80000004
  Private Const HKEY_USERS = &H80000003
  
  
  Private Const KEY_CREATE_LINK = &H20
  Private Const KEY_CREATE_SUB_KEY = &H4
  Private Const KEY_ENUMERATE_SUB_KEYS = &H8
  Private Const KEY_EVENT = &H1
  Private Const KEY_NOTIFY = &H10
  Private Const KEY_QUERY_VALUE = &H1
  Private Const KEY_SET_VALUE = &H2
  Private Const SYNCHRONIZE = &H100000
  Private Const STANDARD_RIGHTS_ALL = &H1F0000
  Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
  
  Private Const REG_CREATED_NEW_KEY = &H1
  
  Private lNewKey As Long
  
  Public Sub RenameRegKey(ByVal sRegKey As String, ByVal sNewName As String, Optional ByVal lHive As Long = HKEY_LOCAL_MACHINE)
      Dim lRegKey As Long
      Dim lResult As Long
  
      'Create the new Base Registry Key and get the handle to the existing one
      lNewKey = 0
      If RegOpenKeyEx(lHive, sRegKey, 0&, KEY_ALL_ACCESS, lRegKey) Then Exit Sub
      If RegCreateKeyEx(lHive, Left(sRegKey, InStrRev(sRegKey, "\")) & sNewName, 0, "", 0, KEY_ALL_ACCESS, ByVal 0&, lNewKey, lResult) Or (lResult <> REG_CREATED_NEW_KEY) Then
          Call RegCloseKey(lRegKey)
          Exit Sub
      End If
  
      'Copy all Keys in the Original Key structure to the New Key
      DuplicateKeys lRegKey, lNewKey
  
      'Close Both the Old and New Keys
      Call RegCloseKey(lRegKey)
      Call RegCloseKey(lNewKey)
  
      'Delete the Old Key
      Call RegDeleteKey(lHive, sRegKey)
  End Sub
  
  Private Sub DuplicateKeys(ByVal lKey As Long, ByVal lKeyCopy As Long)
      Dim lIndex As Long, lSubKey As Long, lSubKeyCopy As Long, lResult As Long
      Dim sName As String, sClass As String
      Dim tFILETIME As FILETIME
  
      'Enumerate all SubKeys of the specified Key
      sName = Space(255): sClass = Space(255)
      lIndex = 0
      While RegEnumKeyEx(lKey, lIndex, sName, 255, 0, sClass, 255, tFILETIME) = 0
          sName = Left(sName, InStr(sName, Chr(0)) - 1)
          If InStr(sClass, Chr(0)) Then
              sClass = Left(sClass, InStr(sClass, Chr(0)) - 1)
          End If
          'Create a copy of this Subkey
          If RegCreateKeyEx(lKeyCopy, sName, 0, sClass, 0, KEY_ALL_ACCESS, ByVal 0&, lSubKeyCopy, 0) = 0 Then
              If RegOpenKeyEx(lKey, sName, 0, KEY_ALL_ACCESS, lSubKey) = 0 Then
                  'If there are SubKeys to this Key, Copy them too
                  Call DuplicateKeys(lSubKey, lSubKeyCopy)
                  'Copy all Values in this Key
                  Call DuplicateValues(lSubKey, lSubKeyCopy)
                  'Close this Key, then delete the original
                  Call RegCloseKey(lSubKey)
                  Call RegDeleteKey(lKey, sName)
              End If
              Call RegCloseKey(lSubKeyCopy)
          End If
          sName = Space(255): sClass = Space(255)
          lIndex = lIndex + 1
      Wend
  End Sub
  
  Private Sub DuplicateValues(ByVal lKey As Long, ByVal lKeyCopy As Long)
      Dim lIndex As Long, lLen As Long, lType As Long
      Dim sName As String, aData() As Byte
  
      'Enumerate all values for the specified key
      sName = Space(255)
      lIndex = 0
      While RegEnumValue(lKey, lIndex, sName, 255, 0&, lType, ByVal 0&, lLen) = 0
          ReDim aData(lLen - 1)
          Call RegEnumValue(lKey, lIndex, sName, 255, 0&, lType, aData(0), lLen)
          sName = Left(sName, InStr(sName, Chr(0)) - 1)
          'Copy the value to the new Key structure
          Call RegSetValueEx(lKeyCopy, sName, 0&, lType, aData(0), lLen)
          sName = Space(255)
          lIndex = lIndex + 1
      Wend
  End Sub
  
مثال :
RenameRegKey "Software\OldKeyName", "NewKeyName"
حسین علوی
سه شنبه 24 مرداد 1391, 18:21 عصر
برای Rename کردن کد زیر را در یک ماژول قرار دهید !
 Option Explicit
  
  Private Type FILETIME
          dwLowDateTime As Long
          dwHighDateTime As Long
  End Type
  
  Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
  Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As Any, phkResult As Long, lpdwDisposition As Long) As Long
  Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
  Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
  Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
  Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
  
  Private Const HKEY_CLASSES_ROOT = &H80000000
  Private Const HKEY_CURRENT_CONFIG = &H80000005
  Private Const HKEY_CURRENT_USER = &H80000001
  Private Const HKEY_DYN_DATA = &H80000006
  Private Const HKEY_LOCAL_MACHINE = &H80000002
  Private Const HKEY_PERFORMANCE_DATA = &H80000004
  Private Const HKEY_USERS = &H80000003
  
  
  Private Const KEY_CREATE_LINK = &H20
  Private Const KEY_CREATE_SUB_KEY = &H4
  Private Const KEY_ENUMERATE_SUB_KEYS = &H8
  Private Const KEY_EVENT = &H1
  Private Const KEY_NOTIFY = &H10
  Private Const KEY_QUERY_VALUE = &H1
  Private Const KEY_SET_VALUE = &H2
  Private Const SYNCHRONIZE = &H100000
  Private Const STANDARD_RIGHTS_ALL = &H1F0000
  Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
  
  Private Const REG_CREATED_NEW_KEY = &H1
  
  Private lNewKey As Long
  
  Public Sub RenameRegKey(ByVal sRegKey As String, ByVal sNewName As String, Optional ByVal lHive As Long = HKEY_LOCAL_MACHINE)
      Dim lRegKey As Long
      Dim lResult As Long
  
      'Create the new Base Registry Key and get the handle to the existing one
      lNewKey = 0
      If RegOpenKeyEx(lHive, sRegKey, 0&, KEY_ALL_ACCESS, lRegKey) Then Exit Sub
      If RegCreateKeyEx(lHive, Left(sRegKey, InStrRev(sRegKey, "\")) & sNewName, 0, "", 0, KEY_ALL_ACCESS, ByVal 0&, lNewKey, lResult) Or (lResult <> REG_CREATED_NEW_KEY) Then
          Call RegCloseKey(lRegKey)
          Exit Sub
      End If
  
      'Copy all Keys in the Original Key structure to the New Key
      DuplicateKeys lRegKey, lNewKey
  
      'Close Both the Old and New Keys
      Call RegCloseKey(lRegKey)
      Call RegCloseKey(lNewKey)
  
      'Delete the Old Key
      Call RegDeleteKey(lHive, sRegKey)
  End Sub
  
  Private Sub DuplicateKeys(ByVal lKey As Long, ByVal lKeyCopy As Long)
      Dim lIndex As Long, lSubKey As Long, lSubKeyCopy As Long, lResult As Long
      Dim sName As String, sClass As String
      Dim tFILETIME As FILETIME
  
      'Enumerate all SubKeys of the specified Key
      sName = Space(255): sClass = Space(255)
      lIndex = 0
      While RegEnumKeyEx(lKey, lIndex, sName, 255, 0, sClass, 255, tFILETIME) = 0
          sName = Left(sName, InStr(sName, Chr(0)) - 1)
          If InStr(sClass, Chr(0)) Then
              sClass = Left(sClass, InStr(sClass, Chr(0)) - 1)
          End If
          'Create a copy of this Subkey
          If RegCreateKeyEx(lKeyCopy, sName, 0, sClass, 0, KEY_ALL_ACCESS, ByVal 0&, lSubKeyCopy, 0) = 0 Then
              If RegOpenKeyEx(lKey, sName, 0, KEY_ALL_ACCESS, lSubKey) = 0 Then
                  'If there are SubKeys to this Key, Copy them too
                  Call DuplicateKeys(lSubKey, lSubKeyCopy)
                  'Copy all Values in this Key
                  Call DuplicateValues(lSubKey, lSubKeyCopy)
                  'Close this Key, then delete the original
                  Call RegCloseKey(lSubKey)
                  Call RegDeleteKey(lKey, sName)
              End If
              Call RegCloseKey(lSubKeyCopy)
          End If
          sName = Space(255): sClass = Space(255)
          lIndex = lIndex + 1
      Wend
  End Sub
  
  Private Sub DuplicateValues(ByVal lKey As Long, ByVal lKeyCopy As Long)
      Dim lIndex As Long, lLen As Long, lType As Long
      Dim sName As String, aData() As Byte
  
      'Enumerate all values for the specified key
      sName = Space(255)
      lIndex = 0
      While RegEnumValue(lKey, lIndex, sName, 255, 0&, lType, ByVal 0&, lLen) = 0
          ReDim aData(lLen - 1)
          Call RegEnumValue(lKey, lIndex, sName, 255, 0&, lType, aData(0), lLen)
          sName = Left(sName, InStr(sName, Chr(0)) - 1)
          'Copy the value to the new Key structure
          Call RegSetValueEx(lKeyCopy, sName, 0&, lType, aData(0), lLen)
          sName = Space(255)
          lIndex = lIndex + 1
      Wend
  End Sub
  
مثال :
RenameRegKey "Software\OldKeyName", "NewKeyName"
با تشکر از پاسخ شما
کد رو امنتحان کردم فقط برای حالتی کار میکنه که کلید زیر شاخه ای نداشته باشه علت چیه؟
میشه اینو برای مسیر safe mod چک کنید؟
barnamenevisforme
سه شنبه 24 مرداد 1391, 18:41 عصر
سلام
به مسير زير بريد و كليد هاي  Minimal و Network رو به  Minimal- و Network- تغيير بديد .
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro  l\SafeBoot
برای برگشت چی،کلید ها رو مثل قبل خالی قرار بدیم؟
butterfly8528
سه شنبه 24 مرداد 1391, 22:45 عصر
سلام .
بله،براي برگشت به حالت اول نام كليد ها رو به حالت اولش برگردونيد .
موفق باشيد .
حسین علوی
سه شنبه 24 مرداد 1391, 23:18 عصر
با تشکر از پاسخ شما
کد رو امنتحان کردم فقط برای حالتی کار میکنه که کلید زیر شاخه ای نداشته باشه علت چیه؟
میشه اینو برای مسیر safe mod چک کنید؟
دوستان اگه کسی این کد رو چک کنه ممنون میشم
محسن واژدی
چهارشنبه 25 مرداد 1391, 11:28 صبح
سلام علیکم
ماژول ضمیمه را بررسی کنید 
 برای مثال: 
 Private Sub Command1_Click()
    RenameKey HKEY_CURRENT_USER, "Software\Stardock", "Stardock_Renamed"
End Sub
 
موفق باشید
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.