Beispiel #1
0
def recurse_delete_key(path, base=win32con.HKEY_CLASSES_ROOT):
  """Recursively delete registry keys.

  This is needed since you can't blast a key when subkeys exist.
  """
  try:
    h = win32api.RegOpenKey(base, path)
  except win32api.error as xxx_todo_changeme2:
    (code, fn, msg) = xxx_todo_changeme2.args
    if code != winerror.ERROR_FILE_NOT_FOUND:
      raise win32api.error(code, fn, msg)
  else:
    # parent key found and opened successfully. do some work, making sure
    # to always close the thing (error or no).
    try:
      # remove all of the subkeys
      while 1:
        try:
          subkeyname = win32api.RegEnumKey(h, 0)
        except win32api.error as xxx_todo_changeme:
          (code, fn, msg) = xxx_todo_changeme.args
          if code != winerror.ERROR_NO_MORE_ITEMS:
            raise win32api.error(code, fn, msg)
          break
        recurse_delete_key(path + '\\' + subkeyname, base)

      # remove the parent key
      _remove_key(path, base)
    finally:
      win32api.RegCloseKey(h)
Beispiel #2
0
def FindWindow( wndclassname, windowname ):
    hwnd = user32.FindWindow( windll.cstring( wndclassname ), windll.cstring( windowname ) )
    if hwnd == 0:
        errcode = win32api.GetLastError()
        errmsg = win32api.FormatMessage( errcode )
        raise win32api.error( errcode, 'FindWindow', errmsg )
    return hwnd
Beispiel #3
0
 def test_delete_key_recursive_failed_to_open_key(self):
     """
     Test the delete_key_recursive function on failure to open the key
     """
     try:
         self.assertTrue(
             win_reg.set_value(hive="HKLM",
                               key=FAKE_KEY,
                               vname="fake_name",
                               vdata="fake_value"))
         expected = {
             "Deleted": [],
             "Failed":
             ["\\".join(["HKLM", FAKE_KEY]) + " Failed to connect to key"],
         }
         mock_true = MagicMock(return_value=True)
         mock_error = MagicMock(side_effect=[
             1,
             win32api.error(3, "RegOpenKeyEx", "Failed to connect to key"),
         ])
         with patch("salt.utils.win_reg.key_exists", mock_true), patch(
                 "salt.utils.win_reg.win32api.RegOpenKeyEx", mock_error):
             self.assertDictEqual(
                 win_reg.delete_key_recursive(hive="HKLM", key=FAKE_KEY),
                 expected)
     finally:
         win_reg.delete_key_recursive(hive="HKLM", key=FAKE_KEY)
Beispiel #4
0
 def test_delete_key_recursive_failed_to_open_key(self):
     '''
     Test the delete_key_recursive function on failure to open the key
     '''
     try:
         self.assertTrue(
             win_reg.set_value(hive='HKLM',
                               key=FAKE_KEY,
                               vname='fake_name',
                               vdata='fake_value'))
         expected = {
             'Deleted': [],
             'Failed':
             ['\\'.join(['HKLM', FAKE_KEY]) + ' Failed to connect to key']
         }
         mock_true = MagicMock(return_value=True)
         mock_error = MagicMock(side_effect=[
             1,
             win32api.error(3, 'RegOpenKeyEx', 'Failed to connect to key')
         ])
         with patch('salt.utils.win_reg.key_exists', mock_true), \
                 patch('salt.utils.win_reg.win32api.RegOpenKeyEx', mock_error):
             self.assertDictEqual(
                 win_reg.delete_key_recursive(hive='HKLM', key=FAKE_KEY),
                 expected)
     finally:
         win_reg.delete_key_recursive(hive='HKLM', key=FAKE_KEY)
Beispiel #5
0
def _remove_key(path, base=win32con.HKEY_CLASSES_ROOT):
  "Remove a string from the registry."

  try:
    win32api.RegDeleteKey(base, path)
  except win32api.error, (code, fn, msg):
    if code != winerror.ERROR_FILE_NOT_FOUND:
      raise win32api.error(code, fn, msg)
def _remove_key(path, base=win32con.HKEY_CLASSES_ROOT):
  "Remove a string from the registry."

  try:
    win32api.RegDeleteKey(base, path)
  except win32api.error, (code, fn, msg):
    if code != winerror.ERROR_FILE_NOT_FOUND:
      raise win32api.error(code, fn, msg)
Beispiel #7
0
 def test_delete_value_non_existing(self):
     """
     Test the delete_value function on non existing value
     """
     mock_error = MagicMock(
         side_effect=win32api.error(2, "RegOpenKeyEx", "Unknown error"))
     with patch("salt.utils.win_reg.win32api.RegOpenKeyEx", mock_error):
         self.assertIsNone(
             reg.delete_value(hive="HKLM", key=FAKE_KEY, vname="fake_name"))
Beispiel #8
0
 def test_delete_value_non_existing(self):
     '''
     Test the delete_value function on non existing value
     '''
     mock_error = MagicMock(
         side_effect=win32api.error(2, 'RegOpenKeyEx', 'Unknown error'))
     with patch('salt.utils.win_reg.win32api.RegOpenKeyEx', mock_error):
         self.assertIsNone(
             reg.delete_value(hive='HKLM', key=FAKE_KEY, vname='fake_name'))
def recurse_delete_key(path, base=win32con.HKEY_CLASSES_ROOT):
  """Recursively delete registry keys.

  This is needed since you can't blast a key when subkeys exist.
  """
  try:
    h = win32api.RegOpenKey(base, path)
  except win32api.error, (code, fn, msg):
    if code != winerror.ERROR_FILE_NOT_FOUND:
      raise win32api.error(code, fn, msg)
Beispiel #10
0
def recurse_delete_key(path, base=win32con.HKEY_CLASSES_ROOT):
  """Recursively delete registry keys.

  This is needed since you can't blast a key when subkeys exist.
  """
  try:
    h = win32api.RegOpenKey(base, path)
  except win32api.error, (code, fn, msg):
    if code != winerror.ERROR_FILE_NOT_FOUND:
      raise win32api.error(code, fn, msg)
Beispiel #11
0
 def test_key_exists_unknown_key_error(self):
     '''
     Tests the key_exists function with an unknown key error
     '''
     mock_error = MagicMock(
         side_effect=win32api.error(123, 'RegOpenKeyEx', 'Unknown error'))
     with patch('salt.utils.win_reg.win32api.RegOpenKeyEx', mock_error):
         self.assertRaises(win32api.error,
                           win_reg.key_exists,
                           hive='HKLM',
                           key='SOFTWARE\\Microsoft')
Beispiel #12
0
 def test_key_exists_unknown_key_error(self):
     """
     Tests the key_exists function with an unknown key error
     """
     mock_error = MagicMock(
         side_effect=win32api.error(123, "RegOpenKeyEx", "Unknown error"))
     with patch("salt.utils.win_reg.win32api.RegOpenKeyEx", mock_error):
         self.assertRaises(win32api.error,
                           reg.key_exists,
                           hive="HKLM",
                           key="SOFTWARE\\Microsoft")
Beispiel #13
0
 def test_delete_value_unknown_error(self):
     '''
     Test the delete_value function when there is a problem opening the key
     '''
     mock_error = MagicMock(
         side_effect=win32api.error(123, 'RegOpenKeyEx', 'Unknown error'))
     with patch('salt.utils.win_reg.win32api.RegOpenKeyEx', mock_error):
         self.assertRaises(win32api.error,
                           win_reg.delete_value,
                           hive='HKLM',
                           key=FAKE_KEY,
                           vname='fake_name')
Beispiel #14
0
 def test_value_exists_key_not_exist(self):
     '''
     Tests the value_exists function when the key does not exist
     '''
     mock_error = MagicMock(
         side_effect=win32api.error(2, 'RegOpenKeyEx', 'Unknown error'))
     with patch('salt.utils.win_reg.win32api.RegOpenKeyEx', mock_error):
         self.assertFalse(
             win_reg.value_exists(
                 hive='HKLM',
                 key='SOFTWARE\\Microsoft\\Windows\\CurrentVersion',
                 vname='CommonFilesDir'))
Beispiel #15
0
 def test_value_exists_no_vname(self):
     '''
     Tests the value_exists function when the vname does not exist
     '''
     mock_error = MagicMock(
         side_effect=win32api.error(123, 'RegQueryValueEx', 'Empty Value'))
     with patch('salt.utils.win_reg.win32api.RegQueryValueEx', mock_error):
         self.assertFalse(
             win_reg.value_exists(
                 hive='HKLM',
                 key='SOFTWARE\\Microsoft\\Windows\\CurrentVersion',
                 vname='NonExistingValuePair'))
Beispiel #16
0
 def test_value_exists_empty_default_value(self):
     '''
     Tests the value_exists function when querying the default value
     '''
     mock_error = MagicMock(
         side_effect=win32api.error(2, 'RegQueryValueEx', 'Empty Value'))
     with patch('salt.utils.win_reg.win32api.RegQueryValueEx', mock_error):
         self.assertTrue(
             win_reg.value_exists(
                 hive='HKLM',
                 key='SOFTWARE\\Microsoft\\Windows\\CurrentVersion',
                 vname=None))
Beispiel #17
0
 def test_value_exists_empty_default_value(self):
     """
     Tests the value_exists function when querying the default value
     """
     mock_error = MagicMock(
         side_effect=win32api.error(2, "RegQueryValueEx", "Empty Value"))
     with patch("salt.utils.win_reg.win32api.RegQueryValueEx", mock_error):
         self.assertTrue(
             win_reg.value_exists(
                 hive="HKLM",
                 key="SOFTWARE\\Microsoft\\Windows\\CurrentVersion",
                 vname=None,
             ))
Beispiel #18
0
 def test_value_exists_key_not_exist(self):
     """
     Tests the value_exists function when the key does not exist
     """
     mock_error = MagicMock(
         side_effect=win32api.error(2, "RegOpenKeyEx", "Unknown error"))
     with patch("salt.utils.win_reg.win32api.RegOpenKeyEx", mock_error):
         self.assertFalse(
             win_reg.value_exists(
                 hive="HKLM",
                 key="SOFTWARE\\Microsoft\\Windows\\CurrentVersion",
                 vname="CommonFilesDir",
             ))
Beispiel #19
0
 def test_value_exists_no_vname(self):
     """
     Tests the value_exists function when the vname does not exist
     """
     mock_error = MagicMock(
         side_effect=win32api.error(123, "RegQueryValueEx", "Empty Value"))
     with patch("salt.utils.win_reg.win32api.RegQueryValueEx", mock_error):
         self.assertFalse(
             win_reg.value_exists(
                 hive="HKLM",
                 key="SOFTWARE\\Microsoft\\Windows\\CurrentVersion",
                 vname="NonExistingValuePair",
             ))
Beispiel #20
0
 def test_read_value_unknown_value_error(self):
     '''
     Tests the read_value function with an unknown value error
     '''
     mock_error = MagicMock(side_effect=win32api.error(
         123, 'RegQueryValueEx', 'Unknown error'))
     with patch('salt.utils.win_reg.win32api.RegQueryValueEx', mock_error):
         self.assertRaises(
             win32api.error,
             win_reg.read_value,
             hive='HKLM',
             key='SOFTWARE\\Microsoft\\Windows\\CurrentVersion',
             vname='ProgramFilesPath')
Beispiel #21
0
 def test_set_value_open_create_failure(self):
     """
     Test the set_value function when there is a problem opening/creating
     the key
     """
     mock_error = MagicMock(
         side_effect=win32api.error(123, "RegCreateKeyEx", "Unknown error"))
     with patch("salt.utils.win_reg.win32api.RegCreateKeyEx", mock_error):
         self.assertFalse(
             win_reg.set_value(hive="HKLM",
                               key=FAKE_KEY,
                               vname="fake_name",
                               vdata="fake_data"))
Beispiel #22
0
 def test_set_value_open_create_failure(self):
     '''
     Test the set_value function when there is a problem opening/creating
     the key
     '''
     mock_error = MagicMock(
         side_effect=win32api.error(123, 'RegCreateKeyEx', 'Unknown error'))
     with patch('salt.utils.win_reg.win32api.RegCreateKeyEx', mock_error):
         self.assertFalse(
             win_reg.set_value(hive='HKLM',
                               key=FAKE_KEY,
                               vname='fake_name',
                               vdata='fake_data'))
Beispiel #23
0
 def test_value_exists_unknown_key_error(self):
     '''
     Tests the value_exists function with an unknown error when opening the
     key
     '''
     mock_error = MagicMock(
         side_effect=win32api.error(123, 'RegOpenKeyEx', 'Unknown error'))
     with patch('salt.utils.win_reg.win32api.RegOpenKeyEx', mock_error):
         self.assertRaises(
             win32api.error,
             win_reg.value_exists,
             hive='HKLM',
             key='SOFTWARE\\Microsoft\\Windows\\CurrentVersion',
             vname='CommonFilesDir')
Beispiel #24
0
 def test_delete_value_unknown_error(self):
     """
     Test the delete_value function when there is a problem opening the key
     """
     mock_error = MagicMock(
         side_effect=win32api.error(123, "RegOpenKeyEx", "Unknown error"))
     with patch("salt.utils.win_reg.win32api.RegOpenKeyEx", mock_error):
         self.assertRaises(
             win32api.error,
             win_reg.delete_value,
             hive="HKLM",
             key=FAKE_KEY,
             vname="fake_name",
         )
Beispiel #25
0
 def test_read_value_unknown_value_error(self):
     """
     Tests the read_value function with an unknown value error
     """
     mock_error = MagicMock(side_effect=win32api.error(
         123, "RegQueryValueEx", "Unknown error"))
     with patch("salt.utils.win_reg.win32api.RegQueryValueEx", mock_error):
         self.assertRaises(
             win32api.error,
             win_reg.read_value,
             hive="HKLM",
             key="SOFTWARE\\Microsoft\\Windows\\CurrentVersion",
             vname="ProgramFilesPath",
         )
Beispiel #26
0
 def test_value_exists_unknown_key_error(self):
     """
     Tests the value_exists function with an unknown error when opening the
     key
     """
     mock_error = MagicMock(
         side_effect=win32api.error(123, "RegOpenKeyEx", "Unknown error"))
     with patch("salt.utils.win_reg.win32api.RegOpenKeyEx", mock_error):
         self.assertRaises(
             win32api.error,
             win_reg.value_exists,
             hive="HKLM",
             key="SOFTWARE\\Microsoft\\Windows\\CurrentVersion",
             vname="CommonFilesDir",
         )
  try:
    h = win32api.RegOpenKey(base, path)
  except win32api.error, (code, fn, msg):
    if code != winerror.ERROR_FILE_NOT_FOUND:
      raise win32api.error(code, fn, msg)
  else:
    # parent key found and opened successfully. do some work, making sure
    # to always close the thing (error or no).
    try:
      # remove all of the subkeys
      while 1:
        try:
          subkeyname = win32api.RegEnumKey(h, 0)
        except win32api.error, (code, fn, msg):
          if code != winerror.ERROR_NO_MORE_ITEMS:
            raise win32api.error(code, fn, msg)
          break
        recurse_delete_key(path + '\\' + subkeyname, base)

      # remove the parent key
      _remove_key(path, base)
    finally:
      win32api.RegCloseKey(h)

def _cat_registrar():
  return pythoncom.CoCreateInstance(
    pythoncom.CLSID_StdComponentCategoriesMgr,
    None,
    pythoncom.CLSCTX_INPROC_SERVER,
    pythoncom.IID_ICatRegister
    )
Beispiel #28
0
  try:
    h = win32api.RegOpenKey(base, path)
  except win32api.error, (code, fn, msg):
    if code != winerror.ERROR_FILE_NOT_FOUND:
      raise win32api.error(code, fn, msg)
  else:
    # parent key found and opened successfully. do some work, making sure
    # to always close the thing (error or no).
    try:
      # remove all of the subkeys
      while 1:
        try:
          subkeyname = win32api.RegEnumKey(h, 0)
        except win32api.error, (code, fn, msg):
          if code != winerror.ERROR_NO_MORE_ITEMS:
            raise win32api.error(code, fn, msg)
          break
        recurse_delete_key(path + '\\' + subkeyname, base)

      # remove the parent key
      _remove_key(path, base)
    finally:
      win32api.RegCloseKey(h)

def _cat_registrar():
  return pythoncom.CoCreateInstance(
    pythoncom.CLSID_StdComponentCategoriesMgr,
    None,
    pythoncom.CLSCTX_INPROC_SERVER,
    pythoncom.IID_ICatRegister
    )