Autor Beitrag
nina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: Fr 14.02.03 11:56 
Hallo Ihr da draussen!

Kann mir einer vielleicht weiter helfen?
Ich möchte mit meinem Programm die index.dat löschen! Mittlerweile habe ich herausgefunden, dass man die index. dat im DOS löschen muß.
Gibt es einen Code mit dem ich die index. dat aus dem DOS löschen kann?

Auf dieses index Problem bin ich durch das löschen des Verlaufs gekommen!
Wäre echt super wenn mir einer diesen Code posten könnte!?

nina

P.S. Ich habe Windows 2000 Professional
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 14.02.03 12:42 
sakura vor kurzem Code dazu gepostet. Leider finde ich den Beitrag auf die Schnelle nicht mehr. Ich nehme mir mal die Frechheit heraus und poste meine modifizierte Version. - Modifiziert, weil ich´s für ein NonVCL-Projekt ohne "Classes"-Unit (TStringlist) gebraucht habe:
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
//
// delete files during next reboot (code by sakura)
//
function DeleteFileDuringNextSystemBoot(aFileName: string): Boolean;
var
  ShortName,
  winini    : string;
  os        : TOSVersionInfo;
  ts        : array of string;
  f         : TextFile;
  i         : integer;
begin
  Result := False;

  // get OS version
  os.dwOSVersionInfoSize := sizeof(TOSVersionInfo);
  GetVersionEx(os);

  case os.dwPlatformId of
    // not supported by Win32s
    VER_PLATFORM_WIN32s:
      exit;
    // NT systems
    VER_PLATFORM_WIN32_NT:
      Result := MoveFileEx(pchar(aFileName),
        nil,
        MOVEFILE_REPLACE_EXISTING + MOVEFILE_DELAY_UNTIL_REBOOT);
    // 9x systems
    else begin
      // get Windows folder
      SetLength(winini,MAX_PATH+1);
      SetLength(winini,GetWindowsDirectory(@winini[1],MAX_PATH+1));

      if(winini <> '') then begin
        if(winini[length(winini)] <> '\') then
          winini := winini + '\';
        winini   := winini + 'wininit.ini';

        // get short name of the given file
        SetLength(ShortName,MAX_PATH+1);
        SetLength(ShortName,
          GetShortPathName(@aFilename[1],@ShortName[1],MAX_PATH+1));

        // add it to "wininit.ini" to delete
        // during next reboot
        SetLength(ts,0);

        {$I-}
        // get old file´s content
        AssignFile(f,winini);
        ReSet(f);
        if(IoResult = 0) then begin
          while(not eof(f)) do begin
            SetLength(ts,length(ts)+1);
            ReadLn(f,ts[length(ts)-1]);

            if(lstrcmpi('[rename]',pchar(ts[length(ts)-1])) = 0) then begin
              SetLength(ts,length(ts)+1);
              ts[length(ts)-1] := 'NUL='+ShortName;
            end;
          end;
          CloseFile(f);
        end;

        if(length(ts) = 0) then begin
          SetLength(ts,2);
          ts[0]            := '[rename]';
          ts[1] := 'NUL='+ShortName;
        end;

        // create new!
        ReWrite(f);
        Result := (IoResult = 0);
        if(Result) then begin
          for i := 0 to length(ts) - 1 do
            WriteLn(f,ts[i]);

          CloseFile(f);
        end;
        {$I+}

        SetLength(ts,0);
      end;
    end;
  end;
end;

Dankesschreiben, Schecks, Überweisungen bitte an sakura. :wink:

Funktion aufrufen und Dateiname übergeben.
Die Datei wird erst nach einem Neustart tatsächlich gelöscht.

Gruß.
nina Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: Fr 14.02.03 13:40 
Danke erstmal für den Code. Allerdings funktioniert er bei mir nicht!

Die index.dat die ich löschen möchte liegen bei mir unter:

C:\Dokumente und Einstellungen\(Username)\Lokale Einstellungen\Cookies\index.dat\

Könnte es sein, dass der Pfad falsch ist?

nina
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 14.02.03 16:58 
nina hat folgendes geschrieben:
Danke erstmal für den Code. Allerdings funktioniert er bei mir nicht!

Getestet unter Win98 und XP (allerdings nur kurz und mit Admin-Rechten).

Zitat:
Die index.dat die ich löschen möchte liegen bei mir unter:

C:\Dokumente und Einstellungen\(Username)\Lokale Einstellungen\Cookies\index.dat\

Könnte es sein, dass der Pfad falsch ist?

Lass mal den letzten Backslash \ (rot markiert) weg, sonst ist Windows der Meinung, es gäbe einen Ordner namens "index.dat".

Des Weiteren würde ich empfehlen, du benutzt Shell-Funktionen zum zweifelsfreien Ermitteln des Cookies-Ordners. Eine solche Funktion wäre z.B. SHGetSpecialFolderLocation. Diese erwartet, u.a., einen Class-ID für den Ordner, den du suchst. Bei den Cookies: CSLID_COOKIES, denke ich. Damit erhältst du dann in jedem Fall den korrekten Cookies-Ordner des angemeldeten Benutzers, und du musst dein Programm nicht ständig neu anpassen.

Hilfe zu dem genannten Befehl und der Class-ID (und anderen IDs) findest du hier im Forum -bin 100% sicher- oder in Microsofts MSDN bzw. PSDK.
nina Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: Mo 17.02.03 14:52 
Hallo Mathias!

Ich habe hier im Forum nach SHGetSpecialFolderLocation gesucht, aber nichts dazu gefunden!!!!

Vielleicht kannst Du mir ja auch grad noch sagen wo ich MSDN bzw. PSDK genau finden kann? Denn ich habe keine Ahnung was Du damit meinst!!!! :oops:

nina
nina Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: Mo 17.02.03 15:42 
Es funktioniert immer noch nicht!!

Kann es vielleicht sein, das der Pfad nicht stimmt, denn so viel ich weiss kann man index.dat nur im DOS löschen. Benötige ich dann vielleicht einen anderen "Pfad-Namen"?

Bei mir lautet der Pfad

ausblenden Quelltext
1:
C:\Dokumente und Einstellungen\[Username]\Cookies\index.dat					


nina
foxy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 814

Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
BeitragVerfasst: Mo 17.02.03 16:12 
huhu
also ich weis nicht wo der post von eben hingerutscht ist :D aber ich habe eben dazu was geschrieben da bin ich mir sicher :rofl:

also das mit dem Pfad kann sein deswegen benutze doch die function von mthias ....
du hast recht, das du nix findest im forum, weil die suchfunktion icht einwandfrei geht ;)

nur noch eins, du musst bedenken, wenn du einen neuen Benutzer anlegst, dass dies einen anderen pfad ergibt auserdem kannst du das programm nur anwenden wenn du admin rechte hast oder du willst nur deine eigene User .dat löschen .....

Moderiert von user profile iconTino: Link entfernt.

_________________
"Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
nina Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: Mo 17.02.03 16:28 
Juhu!!!! Es ist vollbracht. Die index.dat lassen sich löschen!!!!

Es lag daran, dass ich nur Netzadministratorenrechte hatte/habe und keine lokalen Administratorenrechte!!!! Oh Mann!!!!! :mrgreen:

Trotzdem vielen Dank für Eure Hilfe!!!!

nina