DemonAngel Posted January 26, 2006 Share Posted January 26, 2006 I am looking for a way to make changes to HK_Current_User on a remote pc. When I open regedit and connect to the remote computer, it does not show me HK_Current_User (I know it shouldnt), rather I have to connect to HK_Users\UserSerialnumber\software\microsoft and so on. Unfortunatly the User Serial Number changes from pc to pc. Is there a way that I can detect what the serial for the currenly loggeg on user is? I know when you connect with poledit, it gives you a choice of the users that exists on that specific pc. Any information would be greatly valued. Link to comment Share on other sites More sharing options...
Moderators big_daddy Posted January 26, 2006 Moderators Share Posted January 26, 2006 (edited) Maybe this will help. It creates a listview of all the usernames and thier SID from the computer you specify. expandcollapse popup#include <GUIConstants.au3> #include <GuiListView.au3> Dim $SID $Computer = InputBox("Computer Name", "Please enter the computer name you wish to connect to:") $SID = _UserSID("", $Computer); Create an array with all username from a machine ; == GUI generated with Koda == $Form1 = GUICreate("Username\SID List", 500, 300, 192, 125, BitOR($WS_CAPTION, $WS_SYSMENU, $WS_SIZEBOX, $WS_MINIMIZEBOX, $WS_MAXIMIZEBOX)) $List1 = GUICtrlCreateListView("Username|SID", 5, 5, 490, 290, BitOR($LVS_NOSORTHEADER, $LVS_SHOWSELALWAYS), BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_SUBITEMIMAGES)) ;Adding username to listview For $x = 1 To $SID[0][0] GUICtrlCreateListViewItem($SID[0][$x] & "|" & $SID[1][$x], $List1) Next _GUICtrlListViewSetColumnWidth ($List1, 0, $LVSCW_AUTOSIZE) _GUICtrlListViewSetColumnWidth ($List1, 1, $LVSCW_AUTOSIZE) GUISetState(@SW_SHOW) While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop EndSelect WEnd Exit ;=============================================================================== ; Function Name: _UserSID() ; ; Description: Return a 2 dimensional array first username second SID. ; ; Syntax: _UserSID ( [$s_UserName, $s_RemoteComputer] ) ; ; Parameter(s): $s_UserName = Username to get SID. ; $s_RemoteComputer = ComputerName on the network ; ; Requirement(s): External: = None. ; Internal: = None. ; ; Return Value(s): On Success: = Returns 2 dimensional array with UserName, SID and sets @error to 0. ; On Failure: = Returns "" and sets @error to 1. ; ; Author(s): Dan Colón ; ; Note(s): ; ; Example(s): ; _UserSID("DColon") it will return DColon SID ; _UserSID() it will return every user SID ;=============================================================================== Func _UserSID($s_UserName = "All", $s_RemoteComputer = '') If $s_UserName = '' Then $s_UserName = 'All' If $s_RemoteComputer <> '' Then If StringMid($s_RemoteComputer, 1, 1) <> '\' Or StringMid($s_RemoteComputer, 2, 1) <> '\' Or StringRight($s_RemoteComputer, 1) <> '\' Then $s_RemoteComputer = '\\' & StringReplace($s_RemoteComputer, '\', '') & '\' EndIf EndIf Local $line, $var, $ProfilePath, $i = 1 Local Const $regkey = $s_RemoteComputer & "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" Local Const $regkeyval1 = "ProfilesDirectory" Local Const $regkeyval2 = "ProfileImagePath" $ProfilePath = RegRead($regkey, $regkeyval1) While 1 $line = RegEnumKey($regkey, $i) $var = RegRead($regkey & $line, $regkeyval2) If @error = 1 Or @error = -1 Then ExitLoop If $s_UserName == "All" Then If Not IsDeclared("aArray") Then Dim $aArray[1][1] ReDim $aArray[UBound($aArray) + 1][UBound($aArray) + 1] $aArray[0][UBound($aArray) - 1] = StringMid($var, StringInStr($var, '\', 0, -1) + 1) $aArray[1][UBound($aArray) - 1] = $line $aArray[0][0] = UBound($aArray) - 1 ElseIf StringLower($var) == StringLower($ProfilePath & "\" & $s_UserName) Then If Not IsDeclared("aArray") Then Dim $aArray[1][1] ReDim $aArray[UBound($aArray) + 1][UBound($aArray) + 1] $aArray[0][UBound($aArray) - 1] = StringMid($var, StringInStr($var, '\', 0, -1) + 1) $aArray[1][UBound($aArray) - 1] = $line $aArray[0][0] = UBound($aArray) - 1 EndIf $i = $i + 1 WEnd If Not IsDeclared("aArray") Then SetError(1) Return ("") Else SetError(0) Return ($aArray) EndIf EndFunc ;==>_UserSID Edited January 26, 2006 by big_daddy Link to comment Share on other sites More sharing options...
DemonAngel Posted January 27, 2006 Author Share Posted January 27, 2006 WOW , this is brilliant. Thanx alot MR Big Daddy Sir Link to comment Share on other sites More sharing options...
Moderators big_daddy Posted January 27, 2006 Moderators Share Posted January 27, 2006 No problem glad I could help. Link to comment Share on other sites More sharing options...
DemonAngel Posted January 27, 2006 Author Share Posted January 27, 2006 I trying to change this script so that I can read a selected entry from the sid section and then use it to make the registry change. Unfortunatly I dont use listview much and dont know what the command is to read the information that I need. Can you help me with that information? Link to comment Share on other sites More sharing options...
Moderators big_daddy Posted January 27, 2006 Moderators Share Posted January 27, 2006 Sure, post what you have so far so I have an idea of what you are wanting to accomplish. Link to comment Share on other sites More sharing options...
DemonAngel Posted January 27, 2006 Author Share Posted January 27, 2006 Ok , here we go expandcollapse popup#include <GUIConstants.au3> #include <GuiListView.au3> Dim $SID $Computer = InputBox("Computer Name", "Please enter the computer name you wish to connect to:") $SID = _UserSID("", $Computer); Create an array with all username from a machine ; == GUI generated with Koda == $Form1 = GUICreate("Outlook Printer Patch", 500, 340, 192, 125, BitOR($WS_CAPTION, $WS_SYSMENU, $WS_SIZEBOX, $WS_MINIMIZEBOX, $WS_MAXIMIZEBOX)) $List1 = GUICtrlCreateListView("Username|SID", 5, 5, 490, 290, BitOR($LVS_NOSORTHEADER, $LVS_SHOWSELALWAYS), BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_SUBITEMIMAGES)) $Deploybutton = GUICtrlCreateButton("Deploy Patch",395,300,100,35) $Exitbutton = GUICtrlCreateButton("Exit",5,300,100,35) ;Adding username to listview For $x = 1 To $SID[0][0] GUICtrlCreateListViewItem($SID[0][$x] & "|" & $SID[1][$x], $List1) Next _GUICtrlListViewSetColumnWidth ($List1, 0, $LVSCW_AUTOSIZE) _GUICtrlListViewSetColumnWidth ($List1, 1, $LVSCW_AUTOSIZE) GUISetState(@SW_SHOW) While 1 $msg = GUIGetMsg() Select Case $msg = $Deploybutton If _GUICtrlListViewGetSelectedCount($List1) = 0 Then MsgBox(0,"Error","Please select a user") Else $selectedSID = "";whatever command to find out what text is selected. RegWrite("HKEY_USERS\" &$selectedSID &"\Software\Microsoft\Office\8.0\Outlook\Printing","Print Settings File","reg_sz","C:\OutlPrnt") EndIf Case $msg = $Exitbutton Exit Case $msg = $GUI_EVENT_CLOSE ExitLoop EndSelect WEnd Exit ;=============================================================================== ; Function Name: _UserSID() ; ; Description: Return a 2 dimensional array first username second SID. ; ; Syntax: _UserSID ( [$s_UserName, $s_RemoteComputer] ) ; ; Parameter(s): $s_UserName = Username to get SID. ; $s_RemoteComputer = ComputerName on the network ; ; Requirement(s): External: = None. ; Internal: = None. ; ; Return Value(s): On Success: = Returns 2 dimensional array with UserName, SID and sets @error to 0. ; On Failure: = Returns "" and sets @error to 1. ; ; Author(s): Dan Colón ; ; Note(s): ; ; Example(s): ; _UserSID("DColon") it will return DColon SID ; _UserSID() it will return every user SID ;=============================================================================== Func _UserSID($s_UserName = "All", $s_RemoteComputer = '') If $s_UserName = '' Then $s_UserName = 'All' If $s_RemoteComputer <> '' Then If StringMid($s_RemoteComputer, 1, 1) <> '\' Or StringMid($s_RemoteComputer, 2, 1) <> '\' Or StringRight($s_RemoteComputer, 1) <> '\' Then $s_RemoteComputer = '\\' & StringReplace($s_RemoteComputer, '\', '') & '\' EndIf EndIf Local $line, $var, $ProfilePath, $i = 1 Local Const $regkey = $s_RemoteComputer & "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" Local Const $regkeyval1 = "ProfilesDirectory" Local Const $regkeyval2 = "ProfileImagePath" $ProfilePath = RegRead($regkey, $regkeyval1) While 1 $line = RegEnumKey($regkey, $i) $var = RegRead($regkey & $line, $regkeyval2) If @error = 1 Or @error = -1 Then ExitLoop If $s_UserName == "All" Then If Not IsDeclared("aArray") Then Dim $aArray[1][1] ReDim $aArray[UBound($aArray) + 1][UBound($aArray) + 1] $aArray[0][UBound($aArray) - 1] = StringMid($var, StringInStr($var, '\', 0, -1) + 1) $aArray[1][UBound($aArray) - 1] = $line $aArray[0][0] = UBound($aArray) - 1 ElseIf StringLower($var) == StringLower($ProfilePath & "\" & $s_UserName) Then If Not IsDeclared("aArray") Then Dim $aArray[1][1] ReDim $aArray[UBound($aArray) + 1][UBound($aArray) + 1] $aArray[0][UBound($aArray) - 1] = StringMid($var, StringInStr($var, '\', 0, -1) + 1) $aArray[1][UBound($aArray) - 1] = $line $aArray[0][0] = UBound($aArray) - 1 EndIf $i = $i + 1 WEnd If Not IsDeclared("aArray") Then SetError(1) Return ("") Else SetError(0) Return ($aArray) EndIf EndFunc;==>_UserSID I belive the only section I still need is located within the while 1 loop. Link to comment Share on other sites More sharing options...
Moderators big_daddy Posted January 27, 2006 Moderators Share Posted January 27, 2006 I haven't tested it, but I think this will work. expandcollapse popup#include <GUIConstants.au3> #include <GuiListView.au3> Dim $SID $Computer = InputBox("Computer Name", "Please enter the computer name you wish to connect to:") $SID = _UserSID("", $Computer); Create an array with all username from a machine ; == GUI generated with Koda == $Form1 = GUICreate("Outlook Printer Patch", 500, 340, 192, 125, BitOR($WS_CAPTION, $WS_SYSMENU, $WS_SIZEBOX, $WS_MINIMIZEBOX, $WS_MAXIMIZEBOX)) $List1 = GUICtrlCreateListView("Username|SID", 5, 5, 490, 290, BitOR($LVS_NOSORTHEADER, $LVS_REPORT, $LVS_SHOWSELALWAYS), BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES)) $Deploybutton = GUICtrlCreateButton("Deploy Patch", 395, 300, 100, 35) $Exitbutton = GUICtrlCreateButton("Exit", 5, 300, 100, 35) ;Adding username to listview For $x = 1 To $SID[0][0] GUICtrlCreateListViewItem($SID[0][$x] & "|" & $SID[1][$x], $List1) Next _GUICtrlListViewSetColumnWidth ($List1, 0, $LVSCW_AUTOSIZE) _GUICtrlListViewSetColumnWidth ($List1, 1, $LVSCW_AUTOSIZE) GUISetState(@SW_SHOW) While 1 $msg = GUIGetMsg() Select Case $msg = $Deploybutton $count = _GUICtrlListViewGetSelectedCount ($List1) If $count = 0 Then MsgBox(0, "Error", "Please select a user") Else $ListIndices = _GUICtrlListViewGetSelectedIndices ($List1, 1) EndIf If $ListIndices == $LV_ERR Then ContinueLoop If $ListIndices[0] > 1 Then For $i = 1 To $count RegWrite("HKEY_USERS\" & $ListIndices[$i - 1] & "\Software\Microsoft\Office\8.0\Outlook\Printing", "Print Settings File", "reg_sz", "C:\OutlPrnt") Next EndIf Case $msg = $Exitbutton Exit Case $msg = $GUI_EVENT_CLOSE ExitLoop EndSelect WEnd Exit ;=============================================================================== ; Function Name: _UserSID() ; ; Description: Return a 2 dimensional array first username second SID. ; ; Syntax: _UserSID ( [$s_UserName, $s_RemoteComputer] ) ; ; Parameter(s): $s_UserName = Username to get SID. ; $s_RemoteComputer = ComputerName on the network ; ; Requirement(s): External: = None. ; Internal: = None. ; ; Return Value(s): On Success: = Returns 2 dimensional array with UserName, SID and sets @error to 0. ; On Failure: = Returns "" and sets @error to 1. ; ; Author(s): Dan Colón ; ; Note(s): ; ; Example(s): ; _UserSID("DColon") it will return DColon SID ; _UserSID() it will return every user SID ;=============================================================================== Func _UserSID($s_UserName = "All", $s_RemoteComputer = '') If $s_UserName = '' Then $s_UserName = 'All' If $s_RemoteComputer <> '' Then If StringMid($s_RemoteComputer, 1, 1) <> '\' Or StringMid($s_RemoteComputer, 2, 1) <> '\' Or StringRight($s_RemoteComputer, 1) <> '\' Then $s_RemoteComputer = '\\' & StringReplace($s_RemoteComputer, '\', '') & '\' EndIf EndIf Local $line, $var, $ProfilePath, $i = 1 Local Const $regkey = $s_RemoteComputer & "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" Local Const $regkeyval1 = "ProfilesDirectory" Local Const $regkeyval2 = "ProfileImagePath" $ProfilePath = RegRead($regkey, $regkeyval1) While 1 $line = RegEnumKey($regkey, $i) $var = RegRead($regkey & $line, $regkeyval2) If @error = 1 Or @error = -1 Then ExitLoop If $s_UserName == "All" Then If Not IsDeclared("aArray") Then Dim $aArray[1][1] ReDim $aArray[UBound($aArray) + 1][UBound($aArray) + 1] $aArray[0][UBound($aArray) - 1] = StringMid($var, StringInStr($var, '\', 0, -1) + 1) $aArray[1][UBound($aArray) - 1] = $line $aArray[0][0] = UBound($aArray) - 1 ElseIf StringLower($var) == StringLower($ProfilePath & "\" & $s_UserName) Then If Not IsDeclared("aArray") Then Dim $aArray[1][1] ReDim $aArray[UBound($aArray) + 1][UBound($aArray) + 1] $aArray[0][UBound($aArray) - 1] = StringMid($var, StringInStr($var, '\', 0, -1) + 1) $aArray[1][UBound($aArray) - 1] = $line $aArray[0][0] = UBound($aArray) - 1 EndIf $i = $i + 1 WEnd If Not IsDeclared("aArray") Then SetError(1) Return ("") Else SetError(0) Return ($aArray) EndIf EndFunc ;==>_UserSID Link to comment Share on other sites More sharing options...
wraithdu Posted January 30, 2008 Share Posted January 30, 2008 Old thread, I know. But I thought I might suggest a change to the script. In Vista, the value for ProfilesDirectory uses a token, so the full string compare fails. Using this instead works - ElseIf StringInStr(StringLower($var), StringLower($s_UserName)) Then Link to comment Share on other sites More sharing options...
BoogY Posted August 26, 2009 Share Posted August 26, 2009 How can you use this to write a REG_DWORD key on a remote computer ? or to change it ? Thanks a lot Link to comment Share on other sites More sharing options...
weaponx Posted August 26, 2009 Share Posted August 26, 2009 How can you use this to write a REG_DWORD key on a remote computer ? or to change it ?Thanks a lotDon't reopen old threads for something you JUST opened a thread for. Link to comment Share on other sites More sharing options...
BoogY Posted August 26, 2009 Share Posted August 26, 2009 Don't reopen old threads for something you JUST opened a thread for.sorry about that but i realy need this... cause it will help me a lot with my work..thank you and realy sorry about that but i'm not a spammer >_< Link to comment Share on other sites More sharing options...
ufukkreis853 Posted June 15, 2018 Share Posted June 15, 2018 hello , ı want to use this func. I am sorry for my bad english. I dont know english. My code is failed. Please help me My code ; expandcollapse popup#RequireAdmin $SID = _UserSID(@UserName, @ComputerName) RegWrite("HKEY_USERS\" & $SID & "\Software\TunesKit\311","data4","REG_SZ","1") Func _UserSID($s_UserName = "All", $s_RemoteComputer = '') If $s_UserName = '' Then $s_UserName = 'All' If $s_RemoteComputer <> '' Then If StringMid($s_RemoteComputer, 1, 1) <> '\' Or StringMid($s_RemoteComputer, 2, 1) <> '\' Or StringRight($s_RemoteComputer, 1) <> '\' Then $s_RemoteComputer = '\\' & StringReplace($s_RemoteComputer, '\', '') & '\' EndIf EndIf Local $line, $var, $ProfilePath, $i = 1 Local Const $regkey = $s_RemoteComputer & "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" Local Const $regkeyval1 = "ProfilesDirectory" Local Const $regkeyval2 = "ProfileImagePath" $ProfilePath = RegRead($regkey, $regkeyval1) While 1 $line = RegEnumKey($regkey, $i) $var = RegRead($regkey & $line, $regkeyval2) If @error = 1 Or @error = -1 Then ExitLoop If $s_UserName == "All" Then If Not IsDeclared("aArray") Then Dim $aArray[1][1] ReDim $aArray[UBound($aArray) + 1][UBound($aArray) + 1] $aArray[0][UBound($aArray) - 1] = StringMid($var, StringInStr($var, '\', 0, -1) + 1) $aArray[1][UBound($aArray) - 1] = $line $aArray[0][0] = UBound($aArray) - 1 ElseIf StringLower($var) == StringLower($ProfilePath & "\" & $s_UserName) Then If Not IsDeclared("aArray") Then Dim $aArray[1][1] ReDim $aArray[UBound($aArray) + 1][UBound($aArray) + 1] $aArray[0][UBound($aArray) - 1] = StringMid($var, StringInStr($var, '\', 0, -1) + 1) $aArray[1][UBound($aArray) - 1] = $line $aArray[0][0] = UBound($aArray) - 1 EndIf $i = $i + 1 WEnd If Not IsDeclared("aArray") Then SetError(1) Return ("") Else SetError(0) Return ($aArray) EndIf EndFunc I want this reg write for all users. Thanx Link to comment Share on other sites More sharing options...
Subz Posted June 15, 2018 Share Posted June 15, 2018 You realize that this post is 12 years old and AutoIt has changed a lot since then? You should just create a new post and not resurrect old threads. Do that and I'll be happy to help. Link to comment Share on other sites More sharing options...
ufukkreis853 Posted June 15, 2018 Share Posted June 15, 2018 Subz I am sorry. I am new this forum. I dont know forum rules. I read rules now. But ı want help Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now