Newsgroup: it.comp.java
Titolo: [Help] Reperire Info dal sistema [Help]

Salve a tutti,
dovrei scrivere del codice che effettua un'analisi del sistema (in 
generale, di quello che voglio io..) e che mi butti l'output in un file.
Come ottenere l'output sul file non č un problema.
Il problema č che ho pensato di valutare le seguenti cose:
- Spazio nell'HD disponibile
Possibile che non esista una primitiva java che lo faccia?
Io mi son abbassato a richiamare un dir.bat che butta l'output su di un 
file (dir>pippo) da cui poi reperisco lo spazio disponibile facendone il 
parsing.
Come soluzione mi sembra poco elegante :(
Avete dei suggerimenti?
Vorrei poi prendere altri paramentri interessanti nei confronti della 
macchina su cui gira la mia applicazione:
- Esistenza della Stampante
- Memoria disponibile
- Bandwidth
- Performance del database in millisecondi
..
..
Sarei molto felice se qualcuno di voi mi indicasse alcuni metodi diciamo 
  piů raffinati per realizzare alcune di queste cose.
Se avete altre idee di dispositivi hardware o risorse da repire per 
favore ditelo pure che ogni suggerimento č ben accetto :)
Grazie mille per l'aiuto.
Matteo


Ok, penso di aver capito cosa intendi. Tutti questi dati non possono
essere prelevati in modo semplice tramite Java (saresti costretto a
passare in continuazione su JNI). Ma visto che sei su Windows ti
propongo una soluzione particolare: usare WMI (Windows Management
Instrumentation). Si tratta di una delle ultime novità di Microsoft
per la gestione remota del proprio sistema operativo. Maggiori info le
puoi trovare su MSDN (ce l'hai, vero?) e sul loro sito (ora non ho il
link sotto mano, prova ad usare il motore di ricerca interno). Puoi
usare uno script VBS (occhio agli antivirus!) per ottenere tutto
quello che ti serve, poi butti tutto su un file di testo. Volendo puoi
sempre usare JACOB per accedere a WMI attraverso COM, sempre rimanendo
in Java (non l'ho ancora fatto). Per farti un esempio delle
potenzialità di WMI, voglio farti vedere uno script VBS che è in grado
di prelevare l'elenco di tutti gli account presenti in un dominio NT
(eseguendolo su un qualunque PC appartenente al dominio stesso) ed
esportarlo in un file di testo in format CSV.
(Lo so, è OT...chiedo scusa...)
--- AccountExport.vbs ---
dim Locator, Service, Network, Accounts, Account
dim group, part
dim fso, hfile
dim scan, quote1, quote2, domainName
dim groupName, userName
dim domainNameRequest, destinationFile, message
Set network=CreateObject("WScript.Network")
domainNameRequest=network.UserDomain
message="Verranno esportati gruppi e account per il dominio "
message=message + vbcrlf + vbcrlf + domainNameRequest
message=message + vbcrlf + vbcrlf
message=message + "Inserire il percorso del file di destinazione"
destinationFile=inputbox(message)
if destinationFile="" then wscript.quit
set Locator=CreateObject("WbemScripting.SWbemLocator")
set Service=Locator.ConnectServer("","root\CIMV2")
Service.Security_.ImpersonationLevel=3
set Accounts=Service.InstancesOf("Win32_GroupUser")
set fso=CreateObject("Scripting.FileSystemObject")
set hfile=fso.CreateTextFile(destinationFile)
scan=0
for each Account in Accounts
  group="" & Account.GroupComponent
  part="" & Account.PartComponent
  scan=instr(1,group,"Domain=")
  if scan<>0 then
    quote1=instr(scan,group,"""")
    quote2=instr(quote1+1,group,"""")
    domainName=mid(group,quote1+1,quote2-quote1-1)
    if domainName=domainNameRequest then
      scan=instr(1,group,"Name=")
      if scan<>0 then
        quote1=instr(scan,group,"""")
        quote2=instr(quote1+1,group,"""")
        groupName=mid(group,quote1+1,quote2-quote1-1)
        scan=instr(1,part,"Name=")
        quote1=instr(scan,part,"""")
        quote2=instr(quote1+1,part,"""")
        userName=mid(part,quote1+1,quote2-quote1-1)
        hfile.writeline """" & groupName & """,""" & userName & """"
      end if
    end if
   end if
next
hfile.close
msgbox "Esportazione completata", vbOkOnly+vbInformation
--- fine file ---
Spero possa esserti utile
--
"tanto va la gatta al largo che affoga"
(per rispondere personalmente leva IlDitoDalCulo)


wow grazie per le info!
penso che dovrò studiarmi un bel po di cosette!
Nel frattempo ho trovato questo:
http://www.tolstoy.com/samizdat/jconfig.html
Dovrebbe permettermi di reperire info sull'hard disk ed e'multi piattaforma!
Grazie dell'aiuto, comincio ad informarmi meglio poi tiro le somme
ciao
Matteo