2006-03-24, 15:07
  #1
Medlem
Turistens avatar
Hej på er
Jag är ingen hejare på programmering utan brukar mest fuska lite med AutoIt och bat. Mitt problem verkar dock bara kunna lösas med VB (om ingen annan har ett tips).

Vad jag vill göra är att scripta ut ett kommando som rensar Temporary Internet Files för den användaren som loggar på. När rensningen sker spelar ingen roll (logon eller logoff), men det viktiga är att allt sker utan att användaren märker att nåt händer eftersom det bara kommer att resultera i massa frågor. Dom märker väl förvisso att datorn går segt första gången, men vad fan...

Jag har hittat ett script som verkar göra det jag är ute efter, men efter omstart dyker cscript.exe upp i en kommandotolksruta vilket inte är så "silent" Nån som kan hjälpa mig med en lösning?

Så här ser scriptet ut (det var jag som nollade msgbox):

Kod:
' PurgeCache V2.0 - 10/26/2001
' Copyright Walter Clayton, 2000 - all rights reserved
' This application may be distributed freely in unmodified form
' No warranties are expressed or implied.
' This script will extract the current location of the temporary internet files and
' set the system up to purge the contents of the folder on system reboot

Dim WSHSHell, fso, args, RSOreg, WinNTVer, Win9xVer, UserRunReg, NTOS, StartRegEntry, TIF

RSOreg = "HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce\DelTIF"
UserRunReg = "HKCU\Software\Microsoft\Windows\CurrentVersion\Run\DelTIF"
WinNTVer = "HKLM\Software\Microsoft\Windows NT\CurrentVersion\CurrentVersion"
Win9xVer = "HKLM\Software\Microsoft\Windows\CurrentVersion\VersionNumber"
NTOS = ""

Set WSHSHell = WScript.CreateObject ("Wscript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

On error resume next
NTOS = WSHShell.RegRead (WinNTVer)
If NTOS = "" then
  NTOS = False
  StartRegEntry = RSOreg
else
  NTOS = True
  StartRegEntry = UserRunReg
end if
On error goto 0

Set args = WScript.Arguments

TIF = ""
if args.count > 1 then
  if args (0) = "DeleteCache" then
    TIF = args (1)
  end if
end if

if TIF <> "" then
  DeleteCache (TIF)
else
  Configure
End if


Sub Configure

Dim TIF, TIFrg, RSO, Resp, L2, SN

TIFreg = "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache"

TIF = WSHShell.RegRead (TIFreg)

' Resp = MsgBox("The Cache located at: " & vbCR & vbCR & TIF & vbCR & vbCR & "Will be deleted on reboot." & vbCR & "OK to accept" & vbCR & "Cancel will ' cancel the request.", vbOKCancel)


' If resp = vbCancel then
'  On error resume next
'   RSO = WSHShell.RegDelete (StartRegEntry)
'  On error goto 0
' else
  SN = Wscript.ScriptFullName
  L2 = "cscript """ & SN & """ //b //nologo DeleteCache " & """" & TIF & """"
  RSO = WSHShell.RegWrite (StartRegEntry, L2)
' end if

End Sub


Sub DeleteCache (TIF)

Dim f1

on error resume next
fso.deletefolder (TIF) 
If NTOS then 
  RSO = WSHSHell.RegDelete (StartRegEntry) 
End if
on error goto 0

End Sub

Tack på förhand!
Citera
2006-03-25, 14:27
  #2
Medlem
rätt enkelt
skapa ett standard exe projekt i vb och se till att inga forms finns utan en modul med Sub Main bara.. ändra i Projekt settings oxå
klista in den koden från scriptet och gör
referenser till Microsoft Scripting Runtime och Shell (WSCript)
Anropa DeleteCache från Main suben direkt eller lägg allt INNAN Configure suben i Main metoden då blir det rensning nästa reboot.
Du blir kanske tvungen o snygga till koden lite för att kompilern ska godta det, men principen är samma.
Lägg genvägen till programmet under Run nyckeln i HKLM/Software/Microsoft/Windows/Current Version och njut av rensning
Citera
2006-03-27, 07:45
  #3
Medlem
Turistens avatar
Det där övergick mitt förstånd och mina kunskaper, men jag tackar i alla fall för svaret! =)
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in