Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Программное обеспечение Windows » Система - Как одним BAT/CMD отредактировать разную у всех веткку HKU\S-1-5-21-........

Ответить
Настройки темы
Система - Как одним BAT/CMD отредактировать разную у всех веткку HKU\S-1-5-21-........

Старожил


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


Конфигурация

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


Точнее как мне запустить с Skype в "режиме совместимости с Vista" командной строкой или bat файлом в ветке HKEY_USERS\S-1-5-21-3909451403-3134265930-2030886782-1000\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
Ведь название ветки \S-1-5-21-3909451403-3134265930-2030886782-1000\ у всех разные, как мне одной командой редактировать эту ветку на разных компьютерах

Отправлено: 22:47, 26-09-2011

 
a_a a_a вне форума

Новый участник


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

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


Так а что мешает получить этот SID программно?
К примеру по аналогии с вот таким кодом:
Код: Выделить весь код
 On Error Resume Next 
Const HKEY_USERS          = &H80000003
strComputer = "."   
Set objRegistry=GetObject("winmgmts:\\" & _      strComputer & "\root\default:StdRegProv")   
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" 
objRegistry.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubkeys   
For Each objSubkey In arrSubkeys     strValueName = "ProfileImagePath"    
strSubPath = strKeyPath & "\" & objSubkey    
objRegistry.GetExpandedStringValue HKEY_USERS E,strSubPath,strValueName,strValue 	
if fullpath = strValue Then 	
sid = objSubkey 	
end if Nex
Здесь мы получаем SID текущего пользователя для конкретной ветки.
Дальше добавляешь SID в начало пути и на каждом компьютере скайп запускаться будет так как надо.

Отправлено: 11:48, 27-09-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


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

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


Если можно на конкретном примере привести, мне не очень понятно как это всё будет выглядеть

Отправлено: 12:00, 27-09-2011 | #3

a_a a_a вне форума

Новый участник


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

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


Код: Выделить весь код
 trusted&local intranet sites********************************"
TextStream.WriteLine " "

On Error Resume Next

Const HKEY_LOCAL_MACHINE = &H80000002

strComputer = "."
 
Set objRegistry=GetObject("winmgmts:\\" & _ 
    strComputer & "\root\default:StdRegProv")
 
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
objRegistry.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubkeys
 
For Each objSubkey In arrSubkeys
    strValueName = "ProfileImagePath"
    strSubPath = strKeyPath & "\" & objSubkey
    objRegistry.GetExpandedStringValue HKEY_LOCAL_MACHINE,strSubPath,strValueName,strValue
	if fullpath = strValue Then
	sid = objSubkey
	end if
Next


' Constants (taken from WinReg.h)
'
Const HKEY_CLASSES_ROOT   = &H80000000
Const HKEY_CURRENT_USER   = &H80000001

Const HKEY_USERS          = &H80000003

Const REG_SZ        = 1
Const REG_EXPAND_SZ = 2
Const REG_BINARY    = 3
Const REG_DWORD     = 4
Const REG_MULTI_SZ  = 7

' Chose computer name, registry tree and key path
'
strComputer = "." ' Use . for current machine
hDefKey = HKEY_USERS
strKeyPath = sid+"\software\policies\microsoft\windows\currentversion\internet settings\zonemapKey"




' Connect to registry provider on target machine with current user
'
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

' Enum the subkeys of the key path we've chosen
'
oReg.EnumKey hDefKey, strKeyPath, arrSubKeys

For Each strSubkey In arrSubKeys

  ' Show the subkey
  '


  ' Show its value names and types
  '
  strSubKeyPath = strKeyPath & "\" & strSubkey
  oReg.EnumValues hDefKey, strSubKeyPath, arrValueNames, arrTypes

  For i = LBound(arrValueNames) To UBound(arrValueNames)
    strValueName = arrValueNames(i)
    Select Case arrTypes(i)

      ' Show a REG_SZ value
      '
      Case REG_SZ          
        oReg.GetStringValue hDefKey, strSubKeyPath, strValueName, strValue
		
	if strValue=1 then
	  TextStream.WriteLine "  " & strValueName & " local site"
	end if
      if strValue=2 then
	  TextStream.WriteLine "  " & strValueName & " trusted site"
	end if

      
      ' Show a REG_DWORD value
      '
      Case REG_DWORD
        oReg.GetDWORDValue hDefKey, strSubKeyPath, strValueName, uValue
		
        if uValue=1 then

	  TextStream.WriteLine Mid(strSubKeyPath,2+Len(strKeyPath),Len(strSubKeyPath)) + " is a local site"
	end if
      if uValue=2 then
	  TextStream.WriteLine Mid(strSubKeyPath,2+Len(strKeyPath),Len(strSubKeyPath)) + " is a trusted site"
	end if
				  

      
    End Select
  Next

Next
Вот конкретный пример. Здесь для current user определяется SID (тот что начинается с S-1-5-21) и SID добавляется в корень пути для определения текущих настроек браузера. В твоем случае нужно выполнить будет не операцию чтения (wshell.RegRead к примеру) а операцию записи значения.

Отправлено: 12:15, 27-09-2011 | #4


Старожил


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

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


Может я что-то недопонял или не так выразился: а как мне из .BAT и только из .BAT найти этот раздел и отредактировать его, как я понимаю имя этого раздела (S-1-5-21-....) нельзя заменить переменной, но с помощью .BAT можно вытащить его имя из ntuser.dat или из реестра или откудато ещё, и как-нибудь использовать на замену переменной

Отправлено: 15:51, 27-09-2011 | #5


Ветеран


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

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


Valek271183, опишите почему «из .BAT и только из .BAT», а также в какой момент, откуда и как Вы планируете его запускать.

Отправлено: 17:00, 27-09-2011 | #6


Старожил


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

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


Спасибо большое за помощь и извините за беспокойство, нашёл другой способ. Ветка HKEY_USERS дублируется с HKEY_CURRENT_USER и всё что в ней меняется - меняется и там

Отправлено: 17:09, 27-09-2011 | #7



Компьютерный форум OSzone.net » Сфера Microsoft » Программное обеспечение Windows » Система - Как одним BAT/CMD отредактировать разную у всех веткку HKU\S-1-5-21-........

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Batch файл (.bat, .cmd) - как сгенерировать произвольное число от 1 до 10? ANR Скриптовые языки администрирования Windows 9 26-03-2013 10:02
Как свернуть выполнение bat(cmd) файла? Centrinar AutoIt 5 29-09-2011 15:16
CMD/BAT - [решено] Как удалить папку с символом ® через bat\cmd? seriych Скриптовые языки администрирования Windows 5 03-08-2010 09:49
CMD/BAT - [решено] Удаление всех файлов с одним именем на всех дисках ZARG-X Скриптовые языки администрирования Windows 3 08-03-2010 11:53
CMD/BAT - [решено] Удаление всех папок с одним именем на всех дисках volk1234 Скриптовые языки администрирования Windows 15 13-11-2009 02:13




 
Переход