PDA

Visualizza versione completa : Cartella messaggi outlook express


c1p8
27-07-2006, 09.13.40
Ciao a tutti, spero di essere nella sezione corretta del forum.
Ho il seguente problema: devo fare una copia di backup delle cartelle di outlook express dove sono memorizzati i messaggi di posta elettronica (tipicamente C:\Documents and Settings\utente\Impostazioni locali\Dati applicazioni\Identities\identità\Microsoft\Outlook Express).
Dovendo automatizzare la procedura su qualche centinaio di PC, esiste una funzione che mi restituisce per ogni singola macchina il percorso di cui sopra in quanto per l'utente non ci sono problemi ma è l'identità che me ne da parecchi.
Ho trovato la stringa nel registro
[HKEY_CURRENT_USER\Identities\identità\Software\Mic rosoft\Outlook Express\5.0\Store Root], ma come faccio a leggerla con WSH?
Grazie per l'aiuto

miciomao
27-07-2006, 17.40.40
provala naturalmente prende in considerazione solo l'utente di default.
Ricorda di cambiare la dir di backup in strDestinationPath



set oShell = CreateObject("WScript.Shell")
bKey = oShell.RegRead("HKCU\Identities\Default User ID")

bbKey = oShell.RegRead("HKCU\Identities\" & bkey & "\Software\Microsoft\Outlook Express\5.0\Store Root")

Msgbox "Ho individuato la cartella della posta nella Dir: " & vbcrlf & vbcrlf & bbKey
strSourcePath = bbKey
strDestinationPath = "C:\Dir_di_backup"

Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFolder strSourcePath, strDestinationPath, 1


MsgBox ("Backup terminato con successo.")

set fso = nothing

c1p8
28-07-2006, 09.02.35
Grazie miciomao, proprio quello che mi serviva!

Grazie ancora

miciomao
28-07-2006, 09.43.08
;)

c1p8
28-07-2006, 09.56.18
Accidenti, ho parlato troppo presto. Su alcuni utenti la stringa che viene letta dal registro è tipo la seguente: "%UserProfile%\Impostazioni locali\Dati applicazioni\Identities\{861A3861-9A5E-4B31-AFC3-6547082B79EF}\Microsoft\Outlook Express\"

ossia con %userprofile% all'inizio e quindi restituisce un percorso non valido.

Soluzioni?

miciomao
28-07-2006, 10.13.34
Immaginavo......
che macchina è quella ?
cioè c'è differenza di SO tra tutte le macchine che hai ?
io l'ho testato su win 2000

c1p8
28-07-2006, 10.26.59
windows XP SP2 + tutte le patch attualmente rilasciate, come tutte le altre macchine...
Io girovagando ho trovato il seguente script:
const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set StdOut = WScript.StdOut
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon"
strValueName = "UIHost"
oReg.GetExpandedStringValue HKEY_LOCAL_MACHINE,strKeyPath,_
strValueName,strValue
WScript.Echo "The Windows logon UI host is: " & strValue

ho cercato di adattarlo alle mie esigenze trasformandolo in:

const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set StdOut = WScript.StdOut
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Outlook Express\5.0"
strValueName = "Store Root"
oReg.GetExpandedStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue
WScript.Echo "Questa è la stringa: " & strValue

ma mi restituisce un errore

miciomao
28-07-2006, 10.45.57
ecco lo script
ora dovresti adattarlo

cmq fanne uno a parte e usali ad esclusione sulle macchine, così se non và uno funziona l'altro ;)


Option Explicit

dim objWshShell, objFS, objFolder
dim strUserProfile

set objWshShell = CreateObject("WScript.Shell")
strUserProfile = objWshShell.ExpandEnvironmentStrings("%userprofile%")
set objFS = CreateObject("Scripting.FileSystemObject")
set objFolder = objFS.GetFolder(strUserProfile)

WScript.Echo objFolder.path 'Ecco la path dell' %userprofile%

set objFolder = nothing
set objFS = nothing
set objWshShell = nothing

c1p8
28-07-2006, 11.54.29
Ho cambiato il codice con il seguente:
Dim WshShell, IDUtente, percorso, dimensioni
rem ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
rem creo l'oggetto
rem ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
Set WshShell = WScript.CreateObject("WScript.Shell")
rem ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
rem recupero l'ID dell'utente e lo mostro
rem ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
IDUtente = WshShell.RegRead("HKCU\Identities\Last User ID")
rem ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
rem recupero il percorso completo della cartella di archiviazione
rem ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
percorso = WshShell.RegRead("HKCU\Identities\" & IDUtente & "\Software\Microsoft\Outlook Express\5.0\Store Root")
percorso1 = "Identities\" & IDUtente & "\Software\Microsoft\Outlook Express\5.0"
WScript.Echo "ID Utente: " & IDutente
rem const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_CURRENT_USER=&H80000001
strComputer = "."
rem Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
Set oReg=GetObject("winmgmts:root\default:StdRegProv")
oReg.GetExpandedStringValue HKEY_CURRENT_USER,percorso1,"Store Root",strValue
WScript.Echo "percorso1: " & percorso1
WScript.Echo "Strvalue: " & strvalue
rem ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
rem creo variabili e oggetto filesystem
rem ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
rem ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
rem Dimensioni della cartella
rem ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
Set objFolder = FSO.GetFolder(percorso)
dimensioni = objFolder.Size
rem ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
rem scrivo sul file le informazioni
rem ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile ("\\server1\posta\dimposta.txt", ForAppending, True)
objTextFile.WriteLine(percorso & vbTab & dimensioni)
objTextFile.Close
WScript.Echo "Finito, grazie!"
Sebbene io abbia:
percorso1=\Identities\{09143152-351B-45D1-98E2-81A20D515FE9}\software\Microsoft\Outlook Express 5
lui mi legge un valore errato... dove sbaglio?

miciomao
28-07-2006, 12.06.50
mi scrivi l'errore ?

c1p8
28-07-2006, 13.11.25
ho due tipi d'errore ma il secondo dipende dal primo:
1. sebbene la variabile %userprofile% sia settata a "C:\Documents and Settings\nomeutente", il programma mi restituisce: "c:\windows\system32\config\systemprofile\impostazi oni locali\dati applicazioni\identities\{09143152-351B-45D1-98E2-81A20D515FE9}\Microsoft\Outlook Express\" e quindi poi (errore 2)
2. errore in riga 57 carattere 1: impossibile trovare il percorso.

Grazie per l'aiuto che mi stai dando

miciomao
28-07-2006, 15.13.40
Allora il primo esempio che ti avevo postato può essere utile nel caso in cui la path dei file Outlook risiedono in una cartella diversa da quella che OE imposta di default. Questo invece è buono nel caso contrario. Ora dovrebbe andar bene :)


set oShell = CreateObject("WScript.Shell")
bKey = oShell.RegRead("HKCU\Identities\Default User ID")
bbKey = "\Impostazioni locali\Dati applicazioni\Identities\" & bKey & "\Microsoft\Outlook Express"
strUserProfile = oShell.ExpandEnvironmentStrings("%userprofile%")
set objFS = CreateObject("Scripting.FileSystemObject")
bbbKey = objFS.GetFolder(strUserProfile)


Msgbox "Ho individuato la cartella della posta nella Dir: " & vbcrlf & vbcrlf & bbbKey & bbKey
strSourcePath = bbbKey & bbKey
strDestinationPath = "C:\Dir_di_backup"

objFS.CopyFolder strSourcePath, strDestinationPath, 1

MsgBox ("Backup terminato con successo.")

set objFS = nothing
set oShell = nothing

c1p8
28-07-2006, 15.57.35
Adesso è perfetto, lo sto ancora studiando ma funziona alla grande.
Grazie ancora :act: :act: :act: