offline
JScript
#1


JScript
Administradores
Administradores
Sáb 23 Jul 2011, 19:29
Olá pessoal!

Esta é mais uma UDF de minha autoria...

_NetWork.au3
Código:
#include-once
#include "EnvUpdate.inc"
; #INDEX# =======================================================================================================================
; Title .........: Set/Get WorkGroupName and Set ComputerName
; AutoIt Version.: 3.2.12++
; Language.......: English
; Description ...: And Refreshes the OS environment.
; Author ........: João Carlos (jscript)
; Support .......:
; ===============================================================================================================================

; #CURRENT# =====================================================================================================================
;_SetComputerName
;_SetWorkGroupName
;_GetWorkgroupName
; ===============================================================================================================================

; #INTERNAL_USE_ONLY# ===========================================================================================================
; ===============================================================================================================================

; #VARIABLES# ===================================================================================================================

; #FUNCTION# =======================================================================================================================================================
; Name...........: _SetComputerName
; Description ...: Sets the new computer name.
; Syntax.........: _SetComputerName( "ComputerName" )
; Parameters ....:
; Requirement(s).:
; Return values .: Success - Returns 1
;                  Failure - Returns 0
; Author ........: jscript
; Modified.......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: _SetComputerName( "VAIO" )
; ==================================================================================================================================================================
Func _SetComputerName($sCmpName)
   Local $sLogonKey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
   Local $sCtrlKey = "HKLM\SYSTEM\CurrentControlSet"

   ; RagsRevenge -> http://www.autoitscript.com/forum/index.php?showtopic=54091&view=findpost&p=821901
   If StringRegExp($sCmpName, '\\|/|:|\*|\?|"|<|>|\.|,|~|!|@|#|\$|%|\^|&|\(|\)|\;|{|}|_|=|\+|\[|\]|\x60' & "|'", 0) = 0 Then Return 0

   ; 5 = ComputerNamePhysicalDnsHostname
   $aRet = DllCall("Kernel32.dll", "BOOL", "SetComputerNameEx", "int", 5, "str", $sCmpName)
   If $aRet[0] = 0 Then Return 0
   RegWrite($sCtrlKey & "\Control\Computername\ActiveComputername", "ComputerName", "REG_SZ", $sCmpName)
   RegWrite($sCtrlKey & "\Control\Computername\Computername", "ComputerName", "REG_SZ", $sCmpName)
   RegWrite($sCtrlKey & "\Services\Tcpip\Parameters", "Hostname", "REG_SZ", $sCmpName)
   RegWrite($sCtrlKey & "\Services\Tcpip\Parameters", "NV Hostname", "REG_SZ", $sCmpName)
   RegWrite($sLogonKey, "AltDefaultDomainName", "REG_SZ", $sCmpName)
   RegWrite($sLogonKey, "DefaultDomainName", "REG_SZ", $sCmpName)
   RegWrite("HKEY_USERS\.Default\Software\Microsoft\Windows Media\WMSDK\General", "Computername", "REG_SZ", $sCmpName)
   _EnvUpdate("COMPUTERNAME", $sCmpName, False, True)
   Return 1
EndFunc  ;==>_SetComputerName

; #FUNCTION# =======================================================================================================================================================
; Name...........: _SetWorkGroupName
; Description ...: Sets the new NetBIOS Workgroup name.
; Syntax.........: _SetWorkGroupName( "WorkGroupName" )
; Parameters ....:
; Requirement(s).:
; Return values .: Success - Returns NERR_Success
;                  Failure - Return value can be one of the following error codes: http://msdn.microsoft.com/en-us/library/aa370433%28VS.85%29.aspx
; Author ........: jscript
; Modified.......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: _SetWorkGroupName( "MSHOME" )
; ==================================================================================================================================================================
Func _SetWorkGroupName($sGroupName)
   Local $aRet = DllCall("Netapi32.dll", "long", "NetJoinDomain", "int", 0, "wstr", $sGroupName, "int", 0, "int", 0, "int", 0, "dword", 0x00000040)
   Return $aRet[0]
EndFunc  ;==>_SetWorkGroupName

; #FUNCTION# =======================================================================================================================================================
; Name...........: _GetWorkgroupName
; Description ...: Retrivies the current NetBIOS Workgroup.
; Syntax.........: _GetWorkgroupName()
; Parameters ....:
; Requirement(s).:
; Return values .: Success - Returns the string value of the computer's current NetBIOS Workgroup
;                  Failure - Returns "MSHOME" and set @Error = 1
; Author ........: joell
; Modified.......: Authenticity, jscript
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: _GetWorkgroupName()
; ==================================================================================================================================================================
Func _GetWorkgroupName()
   Local $NERR, $pBuffer, $sName
   Local Const $NetSetupUnknownStatus = 0
   Local Const $NetSetupUnjoined = 1
   Local Const $NetSetupWorkgroupName = 2
   Local Const $NetSetupDomainName = 3

   $NERR = DllCall("Netapi32.dll", "int", "NetGetJoinInformation", "wstr", @ComputerName, "ptr*", 0, "int*", 0)

   If @error Then Return SetError(@error, @extended, "")
   If $NERR[0] = 0 Then
      $pBuffer = $NERR[2]
      $sName = DllStructGetData(DllStructCreate("wchar[" & __NetApi_BufferSize($pBuffer) & "]", $pBuffer), 1)
      __NetApi_BufferFree($pBuffer)
   EndIf
   If @error Then Return SetError(@error, @extended, "")

   Return $sName
EndFunc  ;==>_GetWorkgroupName

;  Authenticity
Func __NetApi_BufferSize($pBuffer)
   Local $aResult = DllCall("Netapi32.dll", "int", "NetApiBufferSize", "ptr", $pBuffer, "uint*", 0)

   If @error Then Return SetError(@error, @extended, 0)
   If $aResult[0] <> 0 Then Return SetError(-1, $aResult[0], 0)
   Return $aResult[2]
EndFunc  ;==>__NetApi_BufferSize

;  Authenticity
Func __NetApi_BufferFree($pBuffer)
   Local $aResult = DllCall("Netapi32.dll", "int", "NetApiBufferFree", "ptr", $pBuffer)

   If @error Then Return SetError(@error, @extended, False)
   If $aResult[0] <> 0 Then Return SetError(-1, $aResult[0], False)
   Return SetError(0, 0, True)
EndFunc  ;==>__NetApi_BufferFree
Precisa do código abaixo:

_EnvUpdate.au3:
Código:
#include-once
; #INDEX# =======================================================================================================================
; Title .........: Environment Update
; AutoIt Version.: 3.2.12++
; Language.......: English
; Description ...: Refreshes the OS environment.
; Author ........: João Carlos (jscript)
; Support .......: trancexx, PsaltyDS, KaFu
; ===============================================================================================================================

; #CURRENT# =====================================================================================================================
;_EnvUpdate
; ===============================================================================================================================

; #INTERNAL_USE_ONLY# ===========================================================================================================
; ===============================================================================================================================

; #VARIABLES# ===================================================================================================================
Global $MAX_VALUE_NAME = 1024
Global $HWND_BROADCAST = 0xffff
Global $WM_SETTINGCHANGE = 0x001A
Global $SMTO_ABORTIFHUNG = 0x0002
Global $SMTO_NORMAL = 0x0000
Global $MSG_TIMEOUT = 5000

; #Example# =====================================================================================================================
;_EnvUpdate("VERSION", "7.07.0110.2600")
;MsgBox(4096, @error, EnvGet("VERSION"))
;_EnvUpdate("VERSION", "", True, True)
;MsgBox(4096, @error, EnvGet("VERSION"))
; ===============================================================================================================================

; #FUNCTION# ====================================================================================================================
; Name...........: _EnvUpdate
; Description ...: Refreshes the OS environment.
; Syntax.........: _EnvUpdate( ["envvariable" [, "value" [, CurrentUser [, Machine ]]]] )
; Parameters ....: envvariable  - [optional] Name of the environment variable to set. If no variable, refreshes all variables.
;                  value        - [optional] Value to set the environment variable to. If a value is not used the environment
;                                  variable will be deleted.
;                  CurrentUser  - [optional] Sets the variable in current user environment.
;                  Machine      - [optional] Sets the variable in the machine environment.
; Return values .: Success      - None
;                  Failure      - Sets @error to 1.
; Author ........: João Carlos (jscript)
; Support .......: trancexx, PsaltyDS, KaFu
; Modified.......:
; Remarks .......:
; Related .......:
; Link ..........;
; Example .......; _EnvUpdate("TEMP", @SystemDir & "TEMP", True, True)
; ===============================================================================================================================
Func _EnvUpdate($sEnvVar = "", $vValue = "", $fCurrentUser = True, $fMachine = False)
    Local $sREG_TYPE = "REG_SZ", $iRet1, $iRet2

    If $sEnvVar <> "" Then
        If StringInStr($sEnvVar, "\") Then $sREG_TYPE = "REG_EXPAND_SZ"
        If $vValue <> "" Then
            If $fCurrentUser Then RegWrite("HKCU\Environment", $sEnvVar, $sREG_TYPE, $vValue)
            If $fMachine Then RegWrite("HKLM\System\CurrentControlSet\Control\Session Manager\Environment", $sEnvVar, $sREG_TYPE, $vValue)
        Else
            If $fCurrentUser Then RegDelete("HKCU\Environment", $sEnvVar)
            If $fMachine Then RegDelete("HKLM\System\CurrentControlSet\Control\Session Manager\Environment", $sEnvVar)
        EndIf
        ; http://msdn.microsoft.com/en-us/library/ms686206%28VS.85%29.aspx
        $iRet1 = DllCall("Kernel32.dll", "BOOL", "SetEnvironmentVariable", "str", $sEnvVar, "str", $vValue)
        If $iRet1[0] = 0 Then Return SetError(1)
    EndIf
    ; http://msdn.microsoft.com/en-us/library/ms644952%28VS.85%29.aspx
    $iRet2 = DllCall("user32.dll", "lresult", "SendMessageTimeoutW", _
            "hwnd", $HWND_BROADCAST, _
            "dword", $WM_SETTINGCHANGE, _
            "ptr", 0, _
            "wstr", "Environment", _
            "dword", $SMTO_ABORTIFHUNG, _
            "dword", $MSG_TIMEOUT, _
            "dword_ptr*", 0)

    If $iRet2[0] = 0 Then Return SetError(1)
EndFunc  ;==>_EnvUpdate
Façam comentários!