Что нового

[Реестр] Редактирования реестра, ветки переменной SID.

zinteco

Новичок
Сообщения
4
Репутация
0
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-746137067-1229272821-1417001333-500]
"ProfileImagePath"=hex(2):44,00,3a,00,5c,00,44,00,6f,00,63,00,75,00,6d,00,65,\
00,6e,00,74,00,73,00,20,00,61,00,6e,00,64,00,20,00,53,00,65,00,74,00,74,00,\
69,00,6e,00,67,00,73,00,5c,00,10,04,34,04,3c,04,38,04,3d,04,38,04,41,04,42,\
04,40,04,30,04,42,04,3e,04,40,04,00,00



[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\hivelist]
"\\REGISTRY\\USER\\S-1-5-21-1715567821-413027322-1177238915-500"="\\Device\\HarddiskVolume2\\Documents and Settings\\Администратор.WINDOWS\\NTUSER.DAT"

"\\REGISTRY\\USER\\S-1-5-21-1715567821-413027322-1177238915-500_Classes"="\\Device\\HarddiskVolume2\\Documents and Settings\\Администратор.WINDOWS\\Local Settings\\Application Data\\Microsoft\\Windows\\UsrClass.dat"
[/B]

Красным цвет = это переменная которая при каждой переустановке меняется
синий цвет = это то что мне нужно изменить из Администратор.WINDOWS в Администратор

но есть одно но!
S-1-5-21-1715567821-413027322-1177238915-500 вот эта вещь каждый раз меняется при переустановке...эта и есть причина того, что не подхватывает старые профайлы. в подробности углубятся не буду.
так вот...она то и усложняет мне запрос вреестр.
нужно как то вместо это го S-1-5-21-1715567821-413027322-1177238915-500 поставить переменую... которое б понимала любое значения)
исходя из этого я понимаю что .reg файл тут уже не покатит
в autoit я болный новичек
я лишь могу предположить RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21......", "Profile", "REG_SZ", "XXXXXXXXXXX")

надо чтоб S-1-5-21 и скрипт принимал любое значения дальше, то есть S-1-5-21 это постоянное значения!
помогите товарищи пожалуйста.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Re: [Реестр] редактирования реестра

zinteco
Получить эти данные у меня получилось таким образом:
Код:
For $i = 1 To 10
	$var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", $i)
	If @error <> 0 Then ExitLoop
	If StringInStr($var, "S-1-5-21") <> 0 Then
		MsgBox(0, "", $var)
	EndIf
Next

У меня два таких значения. Первое оканчивается на 500, второе на 501. Если значение должно оканчиваться на 500, то у меня так:
Код:
For $i = 1 To 10
	$var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", $i)
	If @error <> 0 Then ExitLoop
	If StringInStr($var, "S-1-5-21") <> 0 And StringRight($var, 3) = "500" Then
		MsgBox(0, "", $var)
	EndIf
Next
 

sforce5

Олл фо ЛулзЪ
Сообщения
160
Репутация
41
Re: [Реестр] редактирования реестра

Это? SID?

Код:
#include<Security.au3>

Func _GetCurrentUser()
    Local $result = DllCall("Wtsapi32.dll","int", "WTSQuerySessionInformationW", "Ptr", 0, "int", -1, "int", 5, "ptr*", 0, "dword*", 0)
    If @error Or $result[0] = 0 Then Return SetError(1,0,"")
    Local $User = DllStructGetData(DllStructCreate("wchar[" & $result[5] & "]" , $result[4]),1)
    DllCall("Wtsapi32.dll", "int", "WTSFreeMemory", "ptr", $result[4])
    Return $User
EndFunc

Func _GetCurrentUserSID()
    ; [email protected]
    Local $User = _Security__LookupAccountName(_GetCurrentUser(),@ComputerName)
    If @error Then Return SetError(1,0,"")
    Return $User[0]
EndFunc

MsgBox(0, '', _GetCurrentUser() & @CRLF & _GetCurrentUserSID())
 
Автор
Z

zinteco

Новичок
Сообщения
4
Репутация
0
Re: [Реестр] редактирования реестра



Добавлено:
Сообщение автоматически объединено:

madmasles сказал(а):
zinteco
Получить эти данные у меня получилось таким образом:
Код:
For $i = 1 To 10
	$var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", $i)
	If @error <> 0 Then ExitLoop
	If StringInStr($var, "S-1-5-21") <> 0 Then
		MsgBox(0, "", $var)
	EndIf
Next

У меня два таких значения. Первое оканчивается на 500, второе на 501. Если значение должно оканчиваться на 500, то у меня так:
Код:
For $i = 1 To 10
	$var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", $i)
	If @error <> 0 Then ExitLoop
	If StringInStr($var, "S-1-5-21") <> 0 And StringRight($var, 3) = "500" Then
		MsgBox(0, "", $var)
	EndIf
Next
как я понял это просо код на отображения SIDа да?
мне нужно чтоб не отображался SID а определял его значения, и потом в его ветке менял значения которое есть.
Код:
"ProfileImagePath"=hex(2):44,00,3a,00,5c,00,44,00,6f,00,63,00,75,00,6d,00,65,\
  00,6e,00,74,00,73,00,20,00,61,00,6e,00,64,00,20,00,53,00,65,00,74,00,74,00,\
  69,00,6e,00,67,00,73,00,5c,00,10,04,34,04,3c,04,38,04,3d,04,38,04,41,04,42,\
  04,40,04,30,04,42,04,3e,04,40,04,00,00
на которое мне нужно
Код:
"ProfileImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,44,00,72,\
  00,69,00,76,00,65,00,25,00,5c,00,44,00,6f,00,63,00,75,00,6d,00,65,00,6e,00,\
  74,00,73,00,20,00,61,00,6e,00,64,00,20,00,53,00,65,00,74,00,74,00,69,00,6e,\
  00,67,00,73,00,5c,00,48,00,6f,00,6d,00,65,00,20,00,75,00,73,00,65,00,00,00
и все это должно быть скрыто.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Re: [Реестр] редактирования реестра

zinteco
Наверное, так:
Код:
$value = "То, что Вам нужно."
For $i = 1 To 10
	$var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", $i)
	If @error <> 0 Then ExitLoop
	If StringInStr($var, "S-1-5-21") <> 0 And StringRight($var, 3) = "500" Then
		RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" & $var, "ProfileImagePath", "REG_EXPAND_SZ", $value)
	EndIf
Next
Только не знаю, как правильно написать то значение $value, которое Вам нужно. Единственное, что мне пришло в голову, это сначала записать это значение в текстовый файл, а потом прочитать
Код:
$value = FileRead("1.txt")
Но я не знаю, правильно ли это.
 
Автор
Z

zinteco

Новичок
Сообщения
4
Репутация
0
Re: [Реестр] редактирования реестра

огромное спасибо...

P.S если можно тему еще не закрывайте.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 264
Репутация
2 352
Re: [Реестр] редактирования реестра

zinteco [?]
если можно тему еще не закрывайте
Тему закрывать никто не будет, вы её просто помечаете решённой если она является такоквой. Но это утверждение условно...

{TopicNameWarn.Admin}
 
Автор
Z

zinteco

Новичок
Сообщения
4
Репутация
0
Re: [Реестр] редактирования реестра

я вот сделал так
Код:
$value = "D:\Documents and Settings\Администратор"
$set = "\Device\HarddiskVolume2\Documents and Settings\Администратор\NTUSER.DAT"

For $i = 1 To 10
    $var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", $i)
    If @error <> 0 Then ExitLoop
    If StringInStr($var, "S-1-5-21") <> 0 Then
        RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" & $var, "ProfileImagePath", "REG_EXPAND_SZ", $value)
		RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\hivelist", "\REGISTRY\USER\" & $var, "REG_SZ", $set)

    EndIf
Next

все работает)
но есть проблема
Код:
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\hivelist]
"\\REGISTRY\\USER\\S-1-5-21-1715567821-413027322-1177238915-500_Classes"="\\Device\\HarddiskVolume2\\Documents and Settings\\Администратор.WINDOWS\\Local Settings\\Application Data\\Microsoft\\Windows\\UsrClass.dat"
чтоб изменить здесь нужно указать первое значения и последнее значения постоянных ...S-1-5-21 и 500_Classes
вот как это будет выглядит все в месте?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
zinteco
У меня так получается этот ключ определить:
Код:
For $i = 1 To 10
	$var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", $i)
	If @error <> 0 Then ExitLoop
	If StringInStr($var, "S-1-5-21") <> 0 And StringRight($var, 3) = "500" Then
		;RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" & $var, "ProfileImagePath", "REG_EXPAND_SZ", $value)
		$key = "\REGISTRY\USER\" & $var & "_Classes"
		MsgBox(0, "", $key)
	EndIf
Next
 
Верх