- Offizieller Beitrag
Hallo
Hat jemand eine Idee wie man die Arbeitsgruppe (Workgroup) per AutoIt ändern kann? Am besten per Objekt, per Kommandozeile ist aber auch ok^^
Mfg Spider
Hallo
Hat jemand eine Idee wie man die Arbeitsgruppe (Workgroup) per AutoIt ändern kann? Am besten per Objekt, per Kommandozeile ist aber auch ok^^
Mfg Spider
Ich selber weiß nicht wie man das macht, da ich mich nicht mit WMI auskenne, aber es gibt ein WMI-Objekt:
In Win32_Computersystem der Eintrag Domain sollte dafür zuständig sein. Bin sehr an einer Lösung interessiert
Grüße,
Buffo
Sieh dir mal die Datei C:\WINDOWS\Debug\NetSetup.LOG an ...
Ich habe mal ein bisschen hin und her gespielt (ARBEITSGRUPPE; ARBEITSGRUPPECB)
NetSetup.LOG
09/30 21:05:07 NetpValidateName: checking to see if 'ARBEITSGRUPPE' is valid as type 2 name
09/30 21:05:07 NetpCheckNetBiosNameNotInUse: for 'ARBEITSGRUPPE' returned: 0x858
09/30 21:05:07 NetpCheckNetBiosNameNotInUse for 'ARBEITSGRUPPE' [ Workgroup as MACHINE] returned 0x858
09/30 21:05:07 NetpValidateName: name 'ARBEITSGRUPPE' is valid for type 2
09/30 21:05:07 -----------------------------------------------------------------
09/30 21:05:07 NetpDoDomainJoin
09/30 21:05:07 NetpMachineValidToJoin: 'HOME-PC'
09/30 21:05:07 NetpGetLsaPrimaryDomain: status: 0x0
09/30 21:05:07 NetpMachineValidToJoin: status: 0x0
09/30 21:05:07 NetpJoinWorkgroup: joining computer 'HOME-PC' to workgroup 'ARBEITSGRUPPE'
09/30 21:05:07 NetpValidateName: checking to see if 'ARBEITSGRUPPE' is valid as type 2 name
09/30 21:05:07 NetpCheckNetBiosNameNotInUse: for 'ARBEITSGRUPPE' returned: 0x858
09/30 21:05:07 NetpCheckNetBiosNameNotInUse for 'ARBEITSGRUPPE' [ Workgroup as MACHINE] returned 0x858
09/30 21:05:07 NetpValidateName: name 'ARBEITSGRUPPE' is valid for type 2
09/30 21:05:07 NetpSetLsaPrimaryDomain: for 'ARBEITSGRUPPE' status: 0x0
09/30 21:05:07 NetpControlServices: open service 'NETLOGON' failed: 0x424
09/30 21:05:07 NetpJoinWorkgroup: status: 0x0
09/30 21:05:07 NetpDoDomainJoin: status: 0x0
09/30 21:05:11 -----------------------------------------------------------------
09/30 21:05:11 NetpValidateName: checking to see if 'HOME-PC' is valid as type 1 name
09/30 21:05:11 NetpCheckNetBiosNameNotInUse for 'HOME-PC' [MACHINE] returned 0x0
09/30 21:05:11 NetpValidateName: name 'HOME-PC' is valid for type 1
11/13 20:59:21 -----------------------------------------------------------------
11/13 20:59:21 NetpValidateName: checking to see if 'ARBEITSGRUPPECB' is valid as type 2 name
11/13 20:59:24 NetpCheckNetBiosNameNotInUse for 'ARBEITSGRUPPECB' [ Workgroup as MACHINE] returned 0x0
11/13 20:59:24 NetpValidateName: name 'ARBEITSGRUPPECB' is valid for type 2
11/13 20:59:24 -----------------------------------------------------------------
11/13 20:59:24 NetpDoDomainJoin
11/13 20:59:24 NetpMachineValidToJoin: 'HOME-PC'
11/13 20:59:24 NetpGetLsaPrimaryDomain: status: 0x0
11/13 20:59:24 NetpMachineValidToJoin: status: 0x0
11/13 20:59:24 NetpJoinWorkgroup: joining computer 'HOME-PC' to workgroup 'ARBEITSGRUPPECB'
11/13 20:59:24 NetpValidateName: checking to see if 'ARBEITSGRUPPECB' is valid as type 2 name
11/13 20:59:27 NetpCheckNetBiosNameNotInUse for 'ARBEITSGRUPPECB' [ Workgroup as MACHINE] returned 0x0
11/13 20:59:27 NetpValidateName: name 'ARBEITSGRUPPECB' is valid for type 2
11/13 20:59:27 NetpSetLsaPrimaryDomain: for 'ARBEITSGRUPPECB' status: 0x0
11/13 20:59:27 NetpJoinWorkgroup: status: 0x0
11/13 20:59:27 NetpDoDomainJoin: status: 0x0
11/13 21:01:28 -----------------------------------------------------------------
11/13 21:01:28 NetpValidateName: checking to see if 'ARBEITSGRUPPE' is valid as type 2 name
11/13 21:01:31 NetpCheckNetBiosNameNotInUse for 'ARBEITSGRUPPE' [ Workgroup as MACHINE] returned 0x0
11/13 21:01:31 NetpValidateName: name 'ARBEITSGRUPPE' is valid for type 2
11/13 21:01:31 -----------------------------------------------------------------
11/13 21:01:31 NetpDoDomainJoin
11/13 21:01:31 NetpMachineValidToJoin: 'HOME-PC'
11/13 21:01:31 NetpGetLsaPrimaryDomain: status: 0x0
11/13 21:01:31 NetpMachineValidToJoin: status: 0x0
11/13 21:01:31 NetpJoinWorkgroup: joining computer 'HOME-PC' to workgroup 'ARBEITSGRUPPE'
11/13 21:01:31 NetpValidateName: checking to see if 'ARBEITSGRUPPE' is valid as type 2 name
11/13 21:01:34 NetpCheckNetBiosNameNotInUse for 'ARBEITSGRUPPE' [ Workgroup as MACHINE] returned 0x0
11/13 21:01:34 NetpValidateName: name 'ARBEITSGRUPPE' is valid for type 2
11/13 21:01:34 NetpSetLsaPrimaryDomain: for 'ARBEITSGRUPPE' status: 0x0
11/13 21:01:34 NetpJoinWorkgroup: status: 0x0
11/13 21:01:34 NetpDoDomainJoin: status: 0x0
11/13 21:03:32 -----------------------------------------------------------------
11/13 21:03:32 NetpValidateName: checking to see if 'ARBEITSGRUPPECB' is valid as type 2 name
11/13 21:03:35 NetpCheckNetBiosNameNotInUse for 'ARBEITSGRUPPECB' [ Workgroup as MACHINE] returned 0x0
11/13 21:03:35 NetpValidateName: name 'ARBEITSGRUPPECB' is valid for type 2
11/13 21:03:35 -----------------------------------------------------------------
11/13 21:03:35 NetpDoDomainJoin
11/13 21:03:35 NetpMachineValidToJoin: 'HOME-PC'
11/13 21:03:35 NetpGetLsaPrimaryDomain: status: 0x0
11/13 21:03:35 NetpMachineValidToJoin: status: 0x0
11/13 21:03:35 NetpJoinWorkgroup: joining computer 'HOME-PC' to workgroup 'ARBEITSGRUPPECB'
11/13 21:03:35 NetpValidateName: checking to see if 'ARBEITSGRUPPECB' is valid as type 2 name
11/13 21:03:38 NetpCheckNetBiosNameNotInUse for 'ARBEITSGRUPPECB' [ Workgroup as MACHINE] returned 0x0
11/13 21:03:38 NetpValidateName: name 'ARBEITSGRUPPECB' is valid for type 2
11/13 21:03:38 NetpSetLsaPrimaryDomain: for 'ARBEITSGRUPPECB' status: 0x0
11/13 21:03:38 NetpJoinWorkgroup: status: 0x0
11/13 21:03:38 NetpDoDomainJoin: status: 0x0
11/13 21:04:31 -----------------------------------------------------------------
11/13 21:04:31 NetpValidateName: checking to see if 'ARBEITSGRUPPE' is valid as type 2 name
11/13 21:04:34 NetpCheckNetBiosNameNotInUse for 'ARBEITSGRUPPE' [ Workgroup as MACHINE] returned 0x0
11/13 21:04:34 NetpValidateName: name 'ARBEITSGRUPPE' is valid for type 2
11/13 21:04:34 -----------------------------------------------------------------
11/13 21:04:34 NetpDoDomainJoin
11/13 21:04:34 NetpMachineValidToJoin: 'HOME-PC'
11/13 21:04:34 NetpGetLsaPrimaryDomain: status: 0x0
11/13 21:04:34 NetpMachineValidToJoin: status: 0x0
11/13 21:04:34 NetpJoinWorkgroup: joining computer 'HOME-PC' to workgroup 'ARBEITSGRUPPE'
11/13 21:04:34 NetpValidateName: checking to see if 'ARBEITSGRUPPE' is valid as type 2 name
11/13 21:04:37 NetpCheckNetBiosNameNotInUse for 'ARBEITSGRUPPE' [ Workgroup as MACHINE] returned 0x0
11/13 21:04:37 NetpValidateName: name 'ARBEITSGRUPPE' is valid for type 2
11/13 21:04:37 NetpSetLsaPrimaryDomain: for 'ARBEITSGRUPPE' status: 0x0
11/13 21:04:37 NetpJoinWorkgroup: status: 0x0
11/13 21:04:37 NetpDoDomainJoin: status: 0x0
Alles anzeigen
Die Datei C:\WINDOWS\system32\config\SECURITY.LOG wird auch verändert, wenn der Name geändert wird, lässt sich aber nicht öffnen !
Und natürlich muss ein Neustart erfolgen, damit die Änderungen übernommen werden ...
Gruß
Greenhorn
Hallo
Vielen dank für diese Lösungsvorschläge
@Buffo: Ja, damit kann man aufjedenfall die Domain/Arbeitsgruppe auslesen, aber leider nicht schreiben Ich hab es übrigends mit dem Objekt ""WinNT:" gemacht:
$oWinNT = ObjGet("WinNT:")
For $DomainObj In $oWinNT
MsgBox(0,@OSVersion,'Willkommen in der Arbeitsgruppe "'&$DomainObj.Name&'"')
Next
Greenhorn: Mh, aber das ist doch nur eine LOG Datei? Also sie schreibt doch nur auf was geändert wurde oder?
Mfg Spider
Ja, aber irgendwo muss es ja bleiben ...
Habe mit FileInspector 'gescannt' als ich die Namen änderte...
NetSetup.LOG und SECURITY.LOG waren die einzigen Dateien die verändert wurden.
Und die Registry hane ich auch verglichen (vorher-nachher), da wurde nichts verändert.
Ich fand dort auch keine Schlüssel oder Werte die sich darauf beziehen könnten ...
Ich habe hier gerade ein VB-Script gefunden, das u. a. die Arbeitsgruppe ändern können soll. Vielleicht kannst du dir ja daraus was für AutoIt abgucken:
The script's below. Delete or comment out any section or lines that you don't need, e.g. 106-117 (which refer to a default HP printer). If you're in a Domain instead of a Workgroup then line 132 will need amending.
Copy and paste the following into Notepad, save as .vbs:-
'==============================================================================='
' Script name : xp-clone-changer-v04.vbe
' Creation Date : 29-10-2003
' OS : Windows XP
' Amendments : See below
' Added auto-capitalization of Asset no. and Workgroup (26-01-2004)
' Added changes to Computername in printer section of registry (26-01-2004)
' Added check for installed memory (03-07-2004)
'
' PURPOSE
' This script carries out the following function(s):-
' 1) Changes the IP address, subnet mask and gateway.
' 2) Changes the Autologon to the 'Windows User' account.
' 3) Changes the Computername and Workgroup.
' 4) Removes the 'Windows User' account from the 'Administrators' group.
' 5) Deletes the desktop shortcut to 'Clone Changer'.
' 6) Shows amount of installed RAM.
' 7) Re-boots the PC so the changes are carried out.
'
'==============================================================================='
'**Start Encode**
Option Explicit 'Enforce strict naming
Dim WSH, FSO
Dim objComputer, objWMIService, objOperatingSystem, objNetAdapter
Dim strTitle, strVersion, strThisPC, strComputername, strCompNameRegPath, strWorkgroup
Dim strCCS, strTcpipParamsRegPath, strIPAddress, strSubnetMask, strGateway, strGatewayMetric
Dim colMEM, colNetAdapters, colOperatingSystems
Dim errEnable, errGateways
'Setup scripting environment
Set WSH = CreateObject ("WSCript.shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
'Set Version info
strVersion = "v04"
'Set target PC for WMI
strThisPC = "."
'Set the Title for any dialogs
strTitle = "XP Clone Changer " & strVersion
'------------------------------------------------------------------------
'Section 1 - Use WMI to change IP address, subnet mask and gateway
WSH.Popup "Preparing to change IP address, subnet mask and gateway... Please wait.",2, strTitle 'Inform user
'Setup WMI
Set objWMIService = GetObject("winmgmts:\\" & strThisPC & "\root\cimv2")
'Set specific WMI query so 1394 adapter is excluded
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
'Get user input into an array
strIPAddress = Array(InputBox("Enter the new IP address"))
strSubnetMask = Array(InputBox("Enter the new Subnet mask"))
strGateway = Array(InputBox("Enter the new Gateway address"))
'Inform user
WSH.Popup "Please be patient whilst changes are made. This could take 10 seconds or more.",3, strTitle 'Inform user
strGatewayMetric = Array(1)
'Make the changes
For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
If errEnable = 0 Then
WSH.Popup "The IP address has been changed.",2,strTitle 'Inform user of success
Else
WSH.Popup "The IP address could not be changed automatically." & vbCrLf & vbCrLf &_
"This may be because the PC/Laptop is not connected to an active network." & vbCrLf & vbCrLf &_
"Please check the IP settings manually afterwards.",2,strTitle 'Inform user of failure
End If
Next
'------------------------------------------------------------------------
'Section 2 - Change the Autologon to 'Windows User' account
WSH.Popup "Preparing to change AutoLogon to Windows User account... Please wait.",2, strTitle
'Change details in the Registry
WSH.RegWrite "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName", "Windows User"
WSH.Popup "OK... Done!",2, strTitle 'Inform user
'------------------------------------------------------------------------
'Section 3 - Change Computername and Workgroup
WSH.Popup "Preparing to change Computername.",2, strTitle 'Inform user
'Get user input
strComputername = InputBox("Enter the asset no. to use as the Computername, e.g A051468")
strComputername = UCase(strComputername) 'Force capitalization
WSH.Popup "Please wait.",2, strTitle 'Inform user
'Computername
strCCS = "HKLM\SYSTEM\CurrentControlSet\"
strTcpipParamsRegPath = strCCS & "Services\Tcpip\Parameters\"
strCompNameRegPath = strCCS & "Control\Computername\"
'Delete current settings in registry and write new ones
With WSH
.RegDelete strTcpipParamsRegPath & "Hostname"
.RegDelete strTcpipParamsRegPath & "NV Hostname"
.RegWrite strCompNameRegPath & "Computername\Computername", strComputername
.RegWrite strCompNameRegPath & "ActiveComputername\Computername", strComputername
.RegWrite strTcpipParamsRegPath & "Hostname", strComputername
.RegWrite strTcpipParamsRegPath & "NV Hostname", strComputername
End With ' WSH
WSH.RegWrite "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\AltDefaultDomainName", strComputername
WSH.RegWrite "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultDomainName", strComputername
WSH.RegWrite "HKCU\Software\Microsoft\Windows\ShellNoRoam\", strComputername
WSH.RegWrite "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Print\Printers\HP LaserJet 4000 Series PCL\DsSpooler\serverName", LCase(strComputername)
WSH.RegWrite "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Print\Printers\HP LaserJet 4000 Series PCL\DsSpooler\shortServerName", strComputername
WSH.RegWrite "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Print\Printers\HP LaserJet 4000 Series PCL\DsSpooler\uNCName", "\\" & LCase(strComputername) & "\HP LaserJet 4000 Series PCL"
WSH.RegWrite "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Print\Printers\HP LaserJet 4000 Series PCL\DsSpooler\url", "http://" & LCase(strComputername) & "/"
WSH.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers\HP LaserJet 4000 Series PCL\DsSpooler\serverName", LCase(strComputername)
WSH.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers\HP LaserJet 4000 Series PCL\DsSpooler\shortServerName", strComputername
WSH.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers\HP LaserJet 4000 Series PCL\DsSpooler\uNCName", "\\" & LCase(strComputername) & "\HP LaserJet 4000 Series PCL"
WSH.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers\HP LaserJet 4000 Series PCL\DsSpooler\url", "http://" & LCase(strComputername) & "/"
WSH.RegWrite "HKEY_USERS\.DEFAULT\Software\Microsoft\Windows Media\WMSDK\General\Computername", strComputername
WSH.Popup "OK... Done!",2, strTitle 'Inform user
'Workgroup
WSH.Popup "Preparing to change Workgroup.",2, strTitle 'Inform user
'Get user input
strWorkgroup = InputBox("Enter the name to use as the Workgroup, e.g SS38COL")
strWorkgroup = UCase(strWorkgroup) 'Force capitalization
WSH.Popup "Please wait.",2, strTitle 'Inform user
'Use Win2k resource kit utility to make change
WSH.Run "NETDOM.EXE MEMBER \\" & strComputername & " /JOINWorkgroup " & strWorkgroup, 0, True
WSH.Popup "OK... Done!",2, strTitle 'Inform user
'------------------------------------------------------------------------
'Section 4 - Remove Windows User account from Administrators group
WSH.Popup "Preparing to remove Windows User account from Administrators group.",2, strTitle 'Inform user
'Use commandline to carry out removal forcibly in hidden mode
WSH.Run "cmd /c NET LOCALGROUP Administrators " & """Windows User""" & " /DELETE", 2, True
WSH.Popup "OK... Done!",2, strTitle 'Inform user
'------------------------------------------------------------------------
'Section 5 - Delete desktop shortcut
FSO.DeleteFile("C:\Documents and Settings\All Users\Desktop\Clone Changer.lnk"),True
'------------------------------------------------------------------------
'Section 6 - Show amount of installed RAM
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strThisPC & "\root\cimv2")
Set colMEM = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objComputer In colMEM
objComputer.TotalPhysicalMemory = Left((objComputer.TotalPhysicalMemory/1000000),3)
If objComputer.TotalPhysicalMemory < 512 Then
WSH.Popup "Installed memory:" & vbTab & (objComputer.TotalPhysicalMemory) & "Mb"_
& VbCrLf & VbCrLf & "Warning: This PC has less than 512 Mb of memory installed."_
& VbCrLf & "The swap size is set incorrectly and performance will suffer."_
& VbCrLf & VbCrLf & "Please install more memory ASAP." &_
VbCrLf & VbCrLf & "Click on the OK button.", 0, strTitle
Else
WSH.Popup "Installed memory:" & vbTab & (objComputer.TotalPhysicalMemory) & "Mb"_
& VbCrLf & VbCrLf & "Click on the OK button.", 0, strTitle
End If
Next
'------------------------------------------------------------------------
'Section 7 - Use WMI to re-boot PC
WSH.Popup "Re-booting the PC so changes take effect. Please wait...",2, strTitle 'Inform user
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" & strThisPC & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Reboot()
Next
'------------------------------------------------------------------------
'Finish up
Set WSH = Nothing
Set FSO = Nothing
Set objWMIService = Nothing
Set colNetAdapters = Nothing
Set colMEM = Nothing
WScript.Quit 'Yay!
Alles anzeigen
Quelle: Tek-Tips
Grüße,
Buffo
Hallo
Ja, hier wird es mit NetDom gemacht. Habe ich auch schon Probiert, kriege aber immer Folgende Fehlermeldung:
Naja, die Arbeitsgruppe "WORKGR" existiert tatsächlich nicht, aber wie kann ich denn mit NetDom eine erstellen?
Wenn ich es mit ADD probiere kommt folgende Fehlermeldung:
Vielen dank nochmal
Mfg Spider
Leider kenne ich mich damit nicht wirklich aus, daher kann ich auch nur mir Lösungsansätzen helfen.
Hilfe dir das hier evtl. weiter?
Grüße,
Buffo
Habe mir das gerade nochmal genauer angesehen. Leider kommt bei mir beim Gebrauch von Netdom.exe immer nur die Fehlermeldung "Der RPC-Locator ist nicht verfügbar", daher kann ich nicht testen.
Laut Microsoft Support Tools gibt es die Option /JOINWORKGROUP:
ZitatNetdom.exe
Sie können das Befehlszeilenprogramm "Netdom.exe" verwenden, um einen Computer zu einer Domäne hinzuzufügen oder ein Computerkonto zu verwalten.
• Die Option /JOINDOMAIN fügt einen Computer zu einer Domäne hinzu.
• Die Option /JOINWORKGROUP fügt einen Computer zu einer Arbeitsgruppe hinzu.
• Die Option /RENAME bennent einen Computer in der Domäne um.
Kann ich leider nirgend in der Hilfe finden. Bin ich blind?
Grüße,
Buffo
moin moin!
Hatte gerade erfolglos versucht es über die Registry zu machen nur scheint die Arbtitsgruppe nicht eingetragen zu werden!
Für den ComputerNamen hatte ich es geschafft:
$NewName = "Wunschname"
$OldName = @ComputerName
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerName", "ComputerName", "REG_SZ", $NewName)
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerName", "ActiveComputerName", "REG_SZ", $OldName)
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters", "NV Hostname", "REG_SZ", $NewName)
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName", "ComputerName", "REG_SZ", $NewName)
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName", "ComputerName", "REG_SZ", $OldName)
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters", "NV Hostname", "REG_SZ", $NewName)
Tagchen
GtaSpider
Netdom Syntax
netdom join DeinComputerName(Für local ohne UNC-Pfad) /w:NeueArbeitsgruppe(/w: sollte Parameter "Workgroup" definieren, für Domain steht /d:NeueDomain)
Netdom für W2K(W2K-SupportTools) funktionier nicht mit Parameter /w:, im XP kann nicht das momentan nicht testen.
????
opaed: Bei mir wird dann immer die Hilfe für den Aufruf angezeigt, also ein Zeichen dafür, dass die Syntax falsch ist.
Hier die korrekte Syntax für netdom
netdom.exe member \\COMPUTERNAME /joinworkgroup ARBEITSGRUPPE
COMPUTERNAME und ARBEITSGRUPPE anpassen.
Download von hier
Hallo
Super, vielen Dank. Dann hatte ich einfach die Falsche Version von NetDom.exe erwischt
Für alle die, die es interesiert, hier ist eine Kleine UDF (Downloadet die NetDom.exe automatisch wenn sie nicht existiert):
MsgBox(0,"",_ChangeWorkgroup("ARBEITSGRUPPE"))
[/autoit] [autoit][/autoit] [autoit]Func _ChangeWorkgroup($sWorkgroup,$sComputername = @ComputerName)
If Not FileExists("netdom.exe") Then
If MsgBox(20,"","NetDom.exe not founded! Downlad?") = 7 Then Return SetError(1,0,0)
If @ProcessorArch <> "X86" Then Return SetError(1+MsgBox(16,"","This will only work with an X86 OS. You running "&@OSVersion&" "&@ProcessorArch&"!"),0,0)
TrayTip("Please Wait","Downloading NetDom.exe",4)
InetGet("ftp://ftp.microsoft.com/reskit/nt4/x86/netdom_x86.exe","netdom_inst.exe")
$pid = Run("netdom_inst.exe","",@SW_HIDE)
WinWait("WinZip Self-Extractor [netdom_inst.exe]")
ControlSetText("WinZip Self-Extractor [netdom_inst.exe]","","Edit1",@ScriptDir)
ControlClick("WinZip Self-Extractor [netdom_inst.exe]","","Button3")
WinWait("WinZip Self-Extractor","2 file(s) unzipped successfully")
ProcessClose($pid)
FileDelete(@ScriptDir&"\netdom_inst.exe")
TrayTip("","",1)
EndIf
$pid = Run("netdom.exe member "&$sComputername&" /joinworkgroup "&$sWorkgroup,"",@SW_HIDE,2)
While ProcessExists($pid)
Sleep(100)
WEnd
Return StdoutRead($pid)
EndFunc
Ich hoffe diese Funktion hilft den ein oder anderen
Mfg Spider
EDIT: Grade etwas gefunden, keine Ahnung ob es auch für Arbeitsgruppe geht, ist aber halt ohne Netom sodnern mit Object's..: KLICK MICH
Hier mal noch eine Möglichkeit ohne Netdom oder COM-Objekte:
If _ChangeWorkgroup("Test") Then MsgBox(0,"", "Änderung der Arbeitsgruppe erfolgreich!")
[/autoit] [autoit][/autoit] [autoit];===============================================================================
;
; Function Name: _ChangeWorkgroup()
; Description: Change computer´s workgroup
; Parameter(s): $WGName = new workgroup name
; Requirement(s): Netapi32.dll
; Return Value(s): On Success - 1
; On Failure - 0 and sets @ERROR = 1
; Author(s): [email='AspirinJunkie@german-nlite.de'][/email]
; Note(s): may require reboot to take effect
;
;===============================================================================
Func _ChangeWorkgroup($WGName)
Local $struct[2], $Ptr[2]
$struct[0] = DllStructCreate("wchar[100]")
If @error Then Return SetError(1, 1, 0)
$struct[1] = DllStructCreate("wchar[1]")
If @error Then Return SetError(1, 1, 0)
DllStructSetData($struct[0], 1, $WGName)
If @error Then Return SetError(1, 1, 0)
DllStructSetData($struct[1], 1, '')
If @error Then Return SetError(1, 1, 0)
$Ptr[0] = DllStructGetPtr($struct[0])
$Ptr[1] = DllStructGetPtr($struct[1])
DllCall('Netapi32.dll', 'int', 'NetJoinDomain', "ptr", $Ptr[1], "ptr", $Ptr[0], "ptr", $Ptr[1], "ptr", $Ptr[1], "ptr", $Ptr[1], "dword", 0)
If @error Then Return SetError(1, 1, 0)
Return 1
EndFunc ;==>_ChangeWorkgroup
Das ist ja sehr geil
Doch leider zu früh gefreut, funzt bei mir nicht: Nach gut 1 Sek. ists vorbei und nix is passiert.
was mache ich falsch, was benötige ich evtl. zusätzlich? Habe Win XP Pro SP2.
Adminrechte habe ich natürlich
Grüße,
Buffo
Habe auch XP Pro SP2 mit Admin-Rechten.
Kann momentan auch nicht viel mehr sagen als: Bei mir funktioniert es einwandfrei...
Wenn es direkt am DLL-Call liegen sollte habe ich mal das Skript bisschen angepasst (und auch auf die Möglichkeit andere PC´s zu ändern erweitert).
Lass dieses Skript so wie es ist mal laufen und poste mal den dann eventuell erscheinenden Fehlercode:
If _ChangeWorkgroup("TEST") Then MsgBox(0,"", "Änderung der Arbeitsgruppe erfolgreich!")
MsgBox(0,"", "Fehlercode: " & @error)
;===============================================================================
;
; Function Name: _ChangeWorkgroup()
; Description: Change computer´s workgroup
; Parameter(s): $WGName = new workgroup name
; [$PCName] = name of the network pc-name
; Requirement(s): Netapi32.dll
; Return Value(s): On Success - 1
; On Failure - 0 and sets @ERROR = 1
; Note(s): may require reboot to take effect
; Author(s): [email='AspirinJunkie@german-nlite.de'][/email]
;
;===============================================================================
Func _ChangeWorkgroup($WGName, $PCName = @ComputerName)
Local $struct[3], $Ptr[3]
$struct[0] = DllStructCreate("wchar[100]")
If @error Then Return SetError(1, 1, 0)
$struct[1] = DllStructCreate("wchar[1]")
If @error Then Return SetError(1, 1, 0)
$struct[2] = DllStructCreate("wchar[100]")
If @error Then Return SetError(1, 1, 0)
DllStructSetData($struct[0], 1, $WGName)
If @error Then Return SetError(1, 1, 0)
DllStructSetData($struct[1], 1, 0)
If @error Then Return SetError(1, 1, 0)
DllStructSetData($struct[2], 1, $PCName)
If @error Then Return SetError(1, 1, 0)
$Ptr[0] = DllStructGetPtr($struct[0])
$Ptr[1] = DllStructGetPtr($struct[1])
$Ptr[2] = DllStructGetPtr($struct[2])
DllCall('Netapi32.dll', 'none', 'NetJoinDomain', "ptr", $Ptr[1], "ptr", $Ptr[0], "ptr", $Ptr[1], "ptr", $Ptr[1], "ptr", $Ptr[1], "dword", 0)
If @error Then Return SetError(@error, 1, 0)
Return 1
EndFunc ;==>_ChangeWorkgroup
Ansonsten ist mein Wissen was API-Calls angeht ziemlich beschränkt und ich kann nicht auf Anhieb sagen woran es liegen könnte.
Wie gesagt - bei mir funktioniert es - sogar ohne Reboot ist damit in den Systemeinstellungen eine andere Arbeitsgruppe eingetragen =)
Fehlercode: 1
Na dann betreiben wir das Error-Handling mal etwas exzessiver - folgendes bitte mal ausführen und Ausgabe posten - danke:
If _ChangeWorkgroup("TEST") Then MsgBox(0, "", "Änderung der Arbeitsgruppe erfolgreich!")
MsgBox(0, "", "Fehlercode: " & @error & @CRLF & "Extended: " & @extended)
;===============================================================================
;
; Function Name: _ChangeWorkgroup()
; Description: Change computer´s workgroup
; Parameter(s): $WGName = new workgroup name
; [$PCName] = name of the network pc-name
; Requirement(s): Netapi32.dll
; Return Value(s): On Success - 1
; On Failure - 0 and sets @ERROR
; 1: failure creating structure
; 2: failure setting data
; 3: failure get pointer
; 4: failure dll-call
; (func-errors --> @extended)
; Note(s): may require reboot to take effect
; needs at least Autoit Version 3.2.8.0
; Author(s): [EMAIL]AspirinJunkie at german-nlite.de[/EMAIL]
;
;===============================================================================
Func _ChangeWorkgroup($WGName, $PCName = @ComputerName)
Local $struct[3], $Ptr[3], $Return
$struct[0] = DllStructCreate("wchar[" & StringLen($WGName) + 1 & "]")
If @error Then Return SetError(1, @error, 0)
$struct[1] = DllStructCreate("wchar[1]")
If @error Then Return SetError(1, @error, 0)
$struct[2] = DllStructCreate("wchar[" & StringLen($PCName) + 1 & "]")
If @error Then Return SetError(1, @error, 0)
DllStructSetData($struct[0], 1, $WGName)
If @error Then Return SetError(2, @error, 0)
DllStructSetData($struct[1], 1, '')
If @error Then Return SetError(2, @error, 0)
DllStructSetData($struct[2], 1, $PCName)
If @error Then Return SetError(2, @error, 0)
$Ptr[0] = DllStructGetPtr($struct[0])
If @error Then Return SetError(3, @error, 0)
$Ptr[1] = DllStructGetPtr($struct[1])
If @error Then Return SetError(3, @error, 0)
$Ptr[2] = DllStructGetPtr($struct[2])
If @error Then Return SetError(3, @error, 0)
$Return = DllCall('Netapi32.dll', 'int', 'NetJoinDomain', "ptr", $Ptr[2], "ptr", $Ptr[0], "ptr", $Ptr[1], "ptr", $Ptr[1], "ptr", $Ptr[1], "dword", 0)
If @error Then Return SetError(4, @error, 0)
Return SetError(0, $Return[0], 1)
EndFunc ;==>_ChangeWorkgroup
Sorry, dass ich mich jetzt erst wieder melde, aber das Real-Life hat mich eingeholt
Also - Fehlercode: 1; Extended: 2.
Kannst du damit was anfangen? Mir sagt diese DDLStruct-Geschicte nämlich gar nix
Grüße,
Buffo