Lists of Trusted Files (and the ability to purge them) have vanished in CIS 8.2.

1: CIS version: CIS Premium 8.2.0.4508 (upgraded from 8.1)

2: OS version: Windows 8.1 64 bit (tried on 2 machines)

3: What you did: Since upgrading 2 Windows 8.1 PCs from CIS 8.1 to 8.2.0.4508, I have noticed that there is now no list of trusted files (which I used to periodically purge in the past, to remove temporary files/installer scripts etc). Is this an intended change in CIS 8.2? It doesnt seem to be documented etc?

4: What you actually saw: Under the CIS settings/GUI I cannot find the trusted files anymore, which used to be present in CIS 8.1 and 8.0.

5: What you expected to happen or see: I expected to see (somewhere in the settings windows) a list of the trusted files etc and an option to purge them etc (just as had been in the case with CIS 8.1/CIS 8.0)

6: If possible attach a screenshot illustrating the GUI problem - N/A - The GUI element has gone!

It’s ‘by design’ from my understanding. The reason why it was removed is the large set of file(s) information-- as for example, activities.

Hope it helps.

I want purge back.

comodo intentionally removed this so its not a bug. You can submit a new wish request to bring purge back.

I agree - re: purge. Won’t it be somewhat less efficient if Comodo is maintaining lists of files to check, that don’t physically exist on the harddrive anymore? Speaking as a developer myself I’d have thought so…?

Thoughts, please?

Mike

I’m not sure as I did not investigate things in detail. I’m pretty sure they confronted with some serious problems if removal was necessary.
Do note that file list is now … a ‘database’ from the looks of it. Perhaps the relations of how files interact are considered from a naive point of view?

Hope it helps.

I suppose I don’t speak for all programmers, but having been in the business for over 40 years, my view is that any software that forces the retention of useless duplicates and non-existent references is not acceptable.

These could add up to thousands of entries over time. And I don’t care to be told that there is no noticeable impact on performance. Neither is there any real impact if there was some garbage on my kitchen floor, but I don’t want it there.

And while we’re here I may as well ask something that I’ve been wondering about for some time: what is the point of flagging a file “untrusted”? Wouldn’t one simply delete it, or if you really want to keep it, put in some special location, like a folder named UNTRUSTED? :-\

It depends on the situation, I guess. ‘Retention’ is actually a good term as it might involve the ability to learn.
I’m not aware of auto-purge system based on a time variable so you might be right. In other words, no one mentioned if files are purged automatically over time (most likely, it does not).

Do note that in that/suggested case we do not know the source of the garbage. :smiley:

PS : Some naive work-around/alternative : add an option to filter nonexistent files.

Thanks.

I was very pleased when the PURGE and SEARCH functions were introduced, as they saved me from having to eyeball the long list of files and locate duplicates in my cleanup tasks.

I was surprised when, after upgrading to this latest (8.2) version, the File List showed many duplicate “File Path” entries, with different “First Observed” dates (this implies that some data pertaining to old entries has been retained all along, even if it wasn’t being displayed). Since there cannot be more than one file per given path, it’s obvious that the older one(s) can be removed, which is what I do. But manually locating all such entries, as well as non-existent ones, is very tedious.

Perhaps, as has been suggested, there is some technical reason that makes automatic removal difficult. In that case, how about flagging duplicates in a different colour, and non existent files in a different one again? Or adding a column for a flag byte. It is clear that the process already knows which files do not exist, because when right-clicking on a non-existent entry, the “Jump to folder” item is greyed out.

Yes, I would like to second this. The facility to purge to me (speaking as a developer myself), seems necessary, to prevent cruft building up over time. Piriform’s CCleaner lets you do it to remove the surprising amount of cruft that Windows itself builds up in the registry (e.g. shell MUI objects pointing to files that no longer exist). To me it seems sensible that Comodo should be able to be manually or automatically (e.g. via a scheduled task) to purge it’s own records for stuff that is no longer relevant… How can we put this forward on the wishlist?

The purge" option is anywhere but not in the longest list of “trusted files”. Annoying, strange…

In the process of writing a script to go through a file created by the EXPORT function of the File List and remove redundant entries, I discovered the following:

Doing an Export, followed immediately by REMOVE of all entries, and then immediately followed by an IMPORT of the file just created by the EXPORT, yields a File List with two or three entries, even though the EXPORTed file contains well over a thousand file names.

Does the EXPORT/IMPORT actually work for anyone? In case somebody decides to try: you can EXPORT, remove all, then IMPORT, and then CANCEL, so nothing is actually changed.

Thanks.

Never mind…

The IMPORT works if OK is hit after removing all the entries, before the IMPORT.

I’ll be providing a script to clean up the TFL after some more testing.

I’ve done the wish here:
https://forums.comodo.com/wishlist-cis/bring-back-old-cis-behaviorfeatures-t111370.0.html

Though I find it stupid that we have to ask again for features we already had and some idiot just out of the blue decided to remove them between 2 versions for no reason what so ever. You don’t make stuff like this ever without asking on forums first if you value your users…

Hello Sheepolina,

Thank you very much for your wish and please note that purge button will be back with the next version :slight_smile:

We are following up our users wishes closely.

Kind Regards
Buket

Thank you, to restore this option :-TU
Are many stayed on the release of the new version?

Hey SD Ahmad,

For now we have purge button restore in our roadmap. Others will be mentioned soon :slight_smile:

Kind Regards
Buket

Will the Unrecognized Files List return to CIS main interface too? Was REALLY handy to have it there, mainly when CIS sandboxed legit files, I just had to go there and make the files trusted and problem solved. I don’t know why some developer removed it suddenly, please bring it back and don’t ever remove it again.

Those who want to keep their Trusted File List clean now may use the following (at your own risk):

  1. Using Notepad (or similar), save the following code as a file with a .vbs extension e.g. PurgeTFL.vbs
  2. Go into the File List and perform an EXPORT
  3. Double click on the vbs file created in step 1; enter the exported file path from step 2 when prompted. A new file will be created in the same directory, with the same name but with “.purged” appended
  4. In the File List, SELECT all entries (top left check box) and then right-click → REMOVE
  5. Click OK to exit the FileList (this is necessary!)
  6. Go back into the File List and perform an IMPORT, using the “…purged” file created in step 3 above. This may take a bit of time, depending on the number of entries in the list and the speed of your computer

The code follows:

Option Explicit

DIM wshShell, objFSO, objShell, objTextFile
DIM FileEntry(100000), strTemp, InputFile, OutputFile
DIM I, J, K, L, N, NumEntries, NumMissing, NumDups
DIM ThisLine, PrevLine, ThisDsn, PrevDsn, ThisDate, PrevDate
Dim strLine1, strLine2, strHeader, strTrailer, strNewTFL
Dim DsnA, DsnB, DateA, DateB

Set wshShell = WScript.CreateObject(“WScript.Shell”)
Set objShell = CreateObject(“Shell.Application”)
Set objFSO = CreateObject(“Scripting.FileSystemObject”)

InputFile = InputBox(“Enter the path of the XML file created by the EXPORT function:”, “Comodo Exported File Name”)
L = LEN(InputFile)
IF L = 0 Then
WScript.Echo “No input file entered - terminating.”
WScript.Quit
End If

If LEFT(InputFile,1) = “”“” Then InputFile = MID(InputFile,2,L-2)
If L > 4 Then
If RIGHT(InputFile,4) <> “.xml” Then InputFile = InputFile & “.xml”
End If

Set objTextFile = objFSO.GetFile(InputFile)

L = LEN(InputFile)
OutputFile = LEFT(InputFile,L-4) & “.Purged.xml”

N = objTextFile.Size
If N = 0 Then
Wscript.Echo “Input file is empty. Terminating.”
WScript.Quit
End If

Set objTextFile = objFSO.OpenTextFile(InputFile, 1, , -1) '-1: Open as UNICODE

strLine1 = objTextFile.Readline
strLine2 = objTextFile.Readline

objTextFile.Close

I = InStr(strLine2,“<file.rating path=”)
If I = 0 Then
Wscript.Echo “Input file does not appear to have been created by the TFL EXPORT function. Terminating.”
WScript.Quit
End If
strHeader = Left(strLine2,I-1)

’ Extract file entries into array, excluding non-existent files
NumEntries = 0
NumMissing = 0
For K = 1 To 999999
J = InStr(MID(strLine2,I),“/>”)
ThisLine = MID(strLine2,I,J+1)
L = InStr(MID(ThisLine,20),“”“”)
ThisDsn = MID(ThisLine,20,L-1)
If ObjFSO.FileExists(ThisDsn) Then
NumEntries = NumEntries + 1
If NumEntries > 100000 Then
WScript.Echo “More than 100,000 files in list - script maximum exceeded. You may increase the 100000 in the script and rerun.”
WScript.Quit
End If
FileEntry(NumEntries) = ThisLine
Else
NumMissing = NumMissing + 1
End If
I = I + J + 1
If MID(strLine2,I,17) <> “<file.rating path” Then Exit For
Next

strTrailer = MID(strLine2,I)

’ Sort by File Path
For I = 1 to NumEntries-1
strTemp = FileEntry(I)
L = InStr(MID(strTemp,20),“”“”)
DsnA = MID(strTemp,20,L-1)
For J = I+1 to NumEntries
strTemp = FileEntry(J)
L = InStr(MID(strTemp,20),“”“”)
DsnB = MID(strTemp,20,L-1)
If StrComp(DsnA,DsnB,1) = 1 Then
strTemp = FileEntry(I)
FileEntry(I) = FileEntry(J)
FileEntry(J) = strTemp
DsnA = DsnB ’ Required because comparison above is done on this variable (DsnA)!
ElseIf StrComp(DsnA,DsnB,1) = 0 Then ’ Same file path…
N = InStr(FileEntry(I),“comodoVerdictDate=”)
DateA = MID(FileEntry(I),N+19,19)
N = InStr(FileEntry(J),“comodoVerdictDate=”)
DateB = MID(FileEntry(J),N+19,19)
If DateA > DateB Then ’ Put newest last
strTemp = FileEntry(I)
FileEntry(I) = FileEntry(J)
FileEntry(J) = strTemp
End If
End If
Next
Next

’ Scan for duplicate file names and exclude all but latest entry
PrevDsn = " "
NumDups = 0
For I = 1 to NumEntries
ThisLine = FileEntry(I)
J = InStr(MID(ThisLine,20),“”“”)
ThisDsn = MID(ThisLine,20,J-1)
If StrComp(ThisDsn,PrevDsn,1) = 0 Then
FileEntry(I-1) = " "
NumDups = NumDups + 1
End If
PrevDsn = ThisDsn
Next

strNewTFL = “”
For I = 1 to NumEntries
If FileEntry(I) <> " " then strNewTFL = strNewTFL & FileEntry(I)
Next

strNewTFL = strHeader & strNewTFL & strTrailer

If ObjFSO.FileExists(OutputFile) Then
strTemp = Msgbox(“File " & OutputFile & " already exists and will be overwritten.” & vbCrLf & vbCrLf & “Continue?”, vbYesNo, “Overwrite File”)
If strTemp <> vbYes Then WScript.Quit
End If

Set objTextFile = objFSO.CreateTextFile(OutputFile, , TRUE) 'TRUE for UNICODE…

objTextFile.Write strLine1 & vbCrLf
objTextFile.Write strNewTFL & vbCrLf

objTextFile.Close

WScript.Echo NumMissing & " non-existent entries and " & NumDups & " duplicates were removed from the original Trusted File List."

WScript.Echo OutputFile & " created." & vbCrLf & vbCrLf & “To replace the original TFL with the new one:” & vbCrLf & vbCrLf & “1. In the Advanced Settings File List, select all entries” & vbCrLf & vbCrLf & “2. Right-Click → REMOVE” & vbCrLf & vbCrLf & “3. Click OK, to exit the File List” & vbCrLf & vbCrLf & “4. Re-enter the File List, then right-click → IMPORT, and navigate to above file.”

WScript.Quit

Two little changes can be made in the above script:

(1) Input file can be chosen from the disk with the native Windows dialog
(2) Dynamic Array may be used, so no need to check the entries limit

The script code:

Option Explicit

DIM objFSO, objTextFile, objDlg
DIM FileEntry(), strTemp, InputFile, OutputFile
DIM I, J, K, L, N, NumEntries, NumMissing, NumDups
DIM ThisLine, PrevLine, ThisDsn, PrevDsn, ThisDate, PrevDate
Dim strLine1, strLine2, strHeader, strTrailer, strNewTFL
Dim DsnA, DsnB, DateA, DateB

Set objFSO = CreateObject(“Scripting.FileSystemObject”)

Set objDlg = CreateObject(“UserAccounts.CommonDialog”)
With objDlg
.Filter = “XML files|.xml|All Files|.*”
.FilterIndex = 1
.InitialDir = “.”
End With

If objDlg.ShowOpen = 0 Then
Wscript.Quit
End If

InputFile = objDlg.FileName

i = InStrRev(InputFile, “.”)
If i = 0 Then
OutputFile = InputFile + “_purged.xml”
else
OutputFile = Mid (InputFile, 1, i - 1) + “_purged.xml”
End If

Set objTextFile = objFSO.GetFile(InputFile)

If objTextFile.Size = 0 Then
Wscript.Echo “Input file is empty. Terminating.”
WScript.Quit
End If

Set objTextFile = objFSO.OpenTextFile(InputFile, 1, , -1) '-1: Open as UNICODE

strLine1 = objTextFile.Readline
strLine2 = objTextFile.Readline

objTextFile.Close

i = InStr(strLine2,“<file.rating path=”)
If i = 0 Then
Wscript.Echo “Input file does not appear to have been created by the TFL EXPORT function. Terminating.”
WScript.Quit
End If
strHeader = Left(strLine2, i - 1)

’ Extract file entries into array, excluding non-existent files
NumEntries = 0
NumMissing = 0
ReDim FileEntry(NumEntries)

Do While (True)
J = InStr(MID(strLine2,I),“/>”)
ThisLine = MID(strLine2,I,J+1)
L = InStr(MID(ThisLine,20),“”“”)
ThisDsn = MID(ThisLine,20,L-1)
If ObjFSO.FileExists(ThisDsn) Then
If UBound(FileEntry) <= NumEntries Then
ReDim Preserve FileEntry(NumEntries + 500)
End If
NumEntries = NumEntries + 1
FileEntry(NumEntries) = ThisLine
Else
NumMissing = NumMissing + 1
End If
I = I + J + 1
If MID(strLine2,I,17) <> “<file.rating path” Then Exit Do
Loop

strTrailer = MID(strLine2,I)

’ Sort by File Path
For I = 1 to NumEntries-1
strTemp = FileEntry(I)
L = InStr(MID(strTemp,20),“”“”)
DsnA = MID(strTemp,20,L-1)
For J = I+1 to NumEntries
strTemp = FileEntry(J)
L = InStr(MID(strTemp,20),“”“”)
DsnB = MID(strTemp,20,L-1)
If StrComp(DsnA,DsnB,1) = 1 Then
strTemp = FileEntry(I)
FileEntry(I) = FileEntry(J)
FileEntry(J) = strTemp
DsnA = DsnB ’ Required because comparison above is done on this variable (DsnA)!
ElseIf StrComp(DsnA,DsnB,1) = 0 Then ’ Same file path…
N = InStr(FileEntry(I),“comodoVerdictDate=”)
DateA = MID(FileEntry(I),N+19,19)
N = InStr(FileEntry(J),“comodoVerdictDate=”)
DateB = MID(FileEntry(J),N+19,19)
If DateA > DateB Then ’ Put newest last
strTemp = FileEntry(I)
FileEntry(I) = FileEntry(J)
FileEntry(J) = strTemp
End If
End If
Next
Next

’ Scan for duplicate file names and exclude all but latest entry
PrevDsn = " "
NumDups = 0
For I = 1 to NumEntries
ThisLine = FileEntry(I)
J = InStr(MID(ThisLine,20),“”“”)
ThisDsn = MID(ThisLine,20,J-1)
If StrComp(ThisDsn,PrevDsn,1) = 0 Then
FileEntry(I-1) = " "
NumDups = NumDups + 1
End If
PrevDsn = ThisDsn
Next

strNewTFL = “”
For I = 1 to NumEntries
If FileEntry(I) <> " " then strNewTFL = strNewTFL & FileEntry(I)
Next

strNewTFL = strHeader & strNewTFL & strTrailer

If ObjFSO.FileExists(OutputFile) Then
strTemp = Msgbox(“File " & OutputFile & " already exists and will be overwritten.” & vbCrLf & vbCrLf & “Continue?”, vbYesNo, “Overwrite File”)
If strTemp <> vbYes Then WScript.Quit
End If

Set objTextFile = objFSO.CreateTextFile(OutputFile, , TRUE) 'TRUE for UNICODE…

objTextFile.Write strLine1 & vbCrLf
objTextFile.Write strNewTFL & vbCrLf

objTextFile.Close

WScript.Echo NumMissing & " non-existent entries and " & NumDups & " duplicates were removed from the original Trusted File List."

WScript.Echo OutputFile & " created." & vbCrLf & vbCrLf & “To replace the original TFL with the new one:” & vbCrLf & vbCrLf & “1. In the Advanced Settings File List, select all entries” & vbCrLf & vbCrLf & “2. Right-Click → REMOVE” & vbCrLf & vbCrLf & “3. Click OK, to exit the File List” & vbCrLf & vbCrLf & “4. Re-enter the File List, then right-click → IMPORT, and navigate to above file.”

WScript.Quit