none
Copiar Arquivo (atalho) dependendo da versão do Windows 7 RRS feed

  • Pergunta

  • Prezados,

    Possuo um script que copia um atalho de um sistema (.exe) para o usuário, caso o mesmo pertença a determinado grupo no AD:

    ' =================================
    ' Disponibilizando atalho ao KiSoft
    ' =================================
    ' # Definindo variáveis:
    Dim objAD, objUser, arrMemberOf, strGroup
    
    ' # Iniciando um grupo no AD com constante "kisoft":
    Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D
    Const kisoft = "cn=GR-GERAL-NATURA-BEL-KISOFT"
    
    ' # Objetos para identificação do usuário:
    Set objAD = CreateObject("ADSystemInfo")
    Set objUser = GetObject("LDAP://" & objAD.UserName)
    set objFso=createObject("scripting.fileSystemObject")
    set objWShell=wScript.createObject("WScript.Shell")
    arrMemberOf = objUser.GetEx("memberOf")
    
    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
        WScript.Echo "O usuário não está associado a algum grupo."
    Else
        For Each strGroup in arrMemberOf        
    	If InStr(lcase(strGroup), lcase(kisoft)) Then
    		usrName=objWShell.expandEnvironmentStrings("%USERNAME%")
    		strFileToCopy="\\gtpc-fs14\suporte\knapp\KiSoft.lnk"
    		strFolder="C:\Documents and Settings\"&usrName&"\Desktop"
    
    		if objFso.folderExists(strFolder) then
    		objFso.copyFile strFileToCopy,strFolder&"\",true
    		end if
    	end if	
    		Next
    End if


    Porém, alguns desktops (Optiplex 390) estão com Windows 7 em versões 32-bit e 64-bit.

    Eu queria adaptar meu script para:

    - caso Win7-32bit, copia um determinado atalho (KiSoft.lnk);
    - caso Win7-64bit, copia um determinado atalho (KiSoft_64bit.lnk).

    O atalho eu mesmo já adaptei à situação.

    Abraços,


    Daniel Silva Analista de TI

    segunda-feira, 9 de abril de 2012 19:31

Respostas

Todas as Respostas

  • Daniel,

    Teste este código

    On Error Resume Next 
    
    'Identifica a arquitetura via WMI
    For Each objOS in GetObject("winmgmts:").InstancesOf ("Win32_OperatingSystem")
    	OSArchitecture = objOS.OSArchitecture
    Next
    
    'Copia atalho
    if OSArchitecture="64-bit" then
    	'coloque aqui o código que copia o atalho 64bits
    else
    	'coloque aqui o código que copia o atalho 32bits
    end if

    Ref.:

    Win32_OperatingSystem class

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa394239(v=vs.85).aspx


    Fábio de Paula Junior

    • Marcado como Resposta Daniel S. Silva terça-feira, 10 de abril de 2012 14:44
    terça-feira, 10 de abril de 2012 14:16
    Moderador
  • Muito obrigado, Fabio.

    Eu tinha conseguido por consulta ao Registro do Windows, mas por WMI fica mais "clean" e melhor. ;)

    Obrigado!


    Daniel Silva Analista de TI

    terça-feira, 10 de abril de 2012 14:44