Kde leží nastavení Indexing service

Kde leží nastavení Indexing service
« kdy: 18. 09. 2024, 00:25:19 »
Potřebuju scriptem číst zda se aktuálně indexují jen názvy souborů či také jejich obsah. V GUI se to kliká v okně Indexing Options -> Advanced -> File Types -> 'Indexing Properties Only' nebo 'Indexing Properties and File Content'. Potřebuju shell scriptem zjistit, která z těch dvou voleb je aktivní. V registrech to ZABOHA nemůžu najít.... Netuší někdo?


Re:Kde leží nastavení Indexing service
« Odpověď #1 kdy: 18. 09. 2024, 15:21:36 »
ChatGPT říká, že to powershellem nejde. Že jen jestli je na složce indexování zapnuto, ale jestli je jen na názvy souborů nebo i na obsah říká, že z PS nezjistíš.

O informaci v registru říká toto (jestli to čtu správně, tak je to jen filtr podle typu, resp přípony):

Ano, informace o indexování složek a nastavení indexování můžeš najít v registru Windows. Konkrétně nastavení indexování souborů a složek je uloženo v následujícím klíči:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search

Tady je několik zajímavých klíčů týkajících se indexování:

FileChangeClientConfigs – Tento klíč obsahuje informace o tom, jaké složky jsou indexovány a jaké ne.
Gather – Zde můžeš najít základní nastavení služby indexování.
SetupCompletedSuccessfully – Informace o tom, zda byl systém indexování úspěšně nakonfigurován.
Dále, detailní nastavení, jestli se indexují pouze názvy souborů nebo jejich obsah, najdeš podle typu souborů v sekci:

HKEY_CLASSES_ROOT

Zde se nachází jednotlivé typy souborů a jejich asociace. Každý typ souboru může obsahovat podklíč, který určuje, zda je daný typ souboru indexován, nebo zda se indexuje pouze název, nebo i obsah.

Například pro soubory .txt můžeš najít relevantní nastavení zde:

HKEY_CLASSES_ROOT.txt

V rámci této větve může být klíč PersistentHandler, který určuje, jak je soubor zpracováván pro indexaci.

Zjištění, zda je obsah indexován:
Pro každý typ souboru je nastaven Indexing Filter, který rozhoduje, zda se indexuje pouze název nebo i obsah. Zde je příklad:

Pouze názvy souborů – Pokud v registru není uveden filtr pro daný typ souboru, systém indexuje pouze názvy souborů.

Indexování obsahu – Pokud je uveden filtr (např. Plain Text Filter pro textové soubory), indexuje se i obsah.

Indexovací filtry jsou uloženy v tomto klíči registru:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\KindMap

Zde můžeš najít mapování mezi příponami souborů a jejich druhy pro účely indexace.

Jak to zjistit pomocí PowerShellu?
Pokud chceš zkusit zjištění přímo přes PowerShell, tady je příklad, jak bys mohl načíst hodnotu z registru pro přípony souborů a jejich asociace:

powershell
Zkopírovat kód
# Příklad pro .txt soubory
$regPath = "HKCR\.txt"
$indexFilter = Get-ItemProperty -Path Registry::$regPath | Select-Object -ExpandProperty "(Default)"

# Zobrazí, jaký filtr je použit pro indexaci
$indexFilter
Tento skript vrátí asociaci pro daný typ souboru a pokud je přidán filtr pro indexování obsahu, bude zde viditelný.

Můžeš si tímto způsobem procházet jednotlivé přípony a jejich nastavení.

Re:Kde leží nastavení Indexing service
« Odpověď #2 kdy: 18. 09. 2024, 19:16:34 »
Díky za snahu. Jen pro upřesnění, nepotřebuju to číst powershellem, ale jen shellem (cmd.exe - tedy příkaz "reg query").

Jinak v "HKCR\.txt" nic zajímavého není, a chvilku s GPT chatem už jsem měl taky ;-)

nicméně myšlenka že se to nastavuje pro jednotlivé typy souborů je zajímavá, protože na mém obstarožním PC po změně té volby a potvrzení vyběhne peak CPU aktivity a PC  na dvě či tři vteřiny skoro "zamrzne", to by nasvědčovalo tomu, že se tam někde provádí dávková změna nad mrtě daty, ale nepodařilo se mi zjistit kde. A to jsem zkoušel už i odchytávat aktivitu v registrech procmonem :-/

jjrsk

  • *****
  • 528
    • Zobrazit profil
Re:Kde leží nastavení Indexing service
« Odpověď #3 kdy: 18. 09. 2024, 20:05:10 »
Ehm ...

V registrech nic takovyho neni, ani byt nemuze je to atribut souboru

https://learn.microsoft.com/en-us/windows/win32/fileio/file-attribute-constants

FILE_ATTRIBUTE_NOT_CONTENT_INDEXED

A samo to funguje uplne stejne jako kdyz budes na foder/disk nastavovat nejaky opravneni = pobezi to klidne par hodin, protoze to bude prochazet a setovat kazdy jeden soubor.

Re:Kde leží nastavení Indexing service
« Odpověď #4 kdy: 18. 09. 2024, 21:32:56 »
zkusil jsem ten atribut přečíst na náhodném souboru pomocí příkazu

powershell.exe "(Get-Item 'soubor.txt').Attributes -band [System.IO.FileAttributes]::NotContentIndexed"

dostal jsem 0

zkusil jsem volbu v GUI přepnout, počkal jsem až to dojede indexing a zkusil znovu, zase 0. Přepnutí v GUI zpátky, dojetý indexing, zase 0.

Buď něco dělám blbě, nebo to není ono...


Re:Kde leží nastavení Indexing service
« Odpověď #5 kdy: 19. 09. 2024, 00:09:14 »
Mně to v zásadě funguje.
Příklad:
Kód: [Vybrat]
C:\Users\User\pokus>copy con soubor1.txt
^Z
        1 file(s) copied.

C:\Users\User\pokus>copy con soubor2.txt
^Z
        1 file(s) copied.

C:\Users\User\pokus>dir /A:I
 Volume in drive C has no label.
 Volume Serial Number is 1C3B-52A4

 Directory of C:\Users\User\pokus

File Not Found

C:\Users\User\pokus>dir /A:-I
 Volume in drive C has no label.
 Volume Serial Number is 1C3B-52A4

 Directory of C:\Users\User\pokus

19.09.2024  00:01    <DIR>          .
19.09.2024  00:01    <DIR>          ..
19.09.2024  00:01                 0 soubor1.txt
19.09.2024  00:01                 0 soubor2.txt
               2 File(s)              0 bytes
               2 Dir(s)  340 135 120 896 bytes free

C:\Users\User\pokus>attrib +I soubor1.txt

C:\Users\User\pokus>dir /A:-I
 Volume in drive C has no label.
 Volume Serial Number is 1C3B-52A4

 Directory of C:\Users\User\pokus

19.09.2024  00:01    <DIR>          .
19.09.2024  00:01    <DIR>          ..
19.09.2024  00:01                 0 soubor2.txt
               1 File(s)              0 bytes
               2 Dir(s)  340 134 998 016 bytes free

C:\Users\User\pokus>dir /A:I
 Volume in drive C has no label.
 Volume Serial Number is 1C3B-52A4

 Directory of C:\Users\User\pokus

19.09.2024  00:01                 0 soubor1.txt
               1 File(s)              0 bytes
               0 Dir(s)  340 134 998 016 bytes free

C:\Users\User\pokus>powershell.exe "(Get-Item 'soubor1.txt').Attributes -band [System.IO.FileAttributes]::NotContentIndexed"
NotContentIndexed

C:\Users\User\pokus>powershell.exe "(Get-Item 'soubor2.txt').Attributes -band [System.IO.FileAttributes]::NotContentIndexed"
0
Je třeba si jen uvědomit, že ten atribut se jmenuje „Not content indexed files“ - tedy soubor, který ten atribut má nastavený, se NEindexuje. A default je ten atribut NEnastavený, tedy soubor (jeho obsah) se indexuje.

Jinak v GUI se to nastavuje v Atributy - Upřesnit.
« Poslední změna: 19. 09. 2024, 00:13:51 od WIFT ​​​​​​​​​​ »

Re:Kde leží nastavení Indexing service
« Odpověď #6 kdy: 19. 09. 2024, 01:07:13 »
jenže ono jde o něco jiného: jak v commandlajně detekovat toto nastavení https://imgpaste.net/image/SD920N

jjrsk

  • *****
  • 528
    • Zobrazit profil
Re:Kde leží nastavení Indexing service
« Odpověď #7 kdy: 19. 09. 2024, 08:17:04 »
jenže ono jde o něco jiného: jak v commandlajně detekovat toto nastavení https://imgpaste.net/image/SD920N

Mno vsechny chujoviny kolem jsou tuhle ProgramData\Microsoft\Search takze si uzij dekodovani tech binarnich sragor. A navic ti to bude uiplne knicemu, protoze z toho stejne nijak nezjistis, jestli ten ci onen soubor je nebo neni aktualne indexovanej.

Re:Kde leží nastavení Indexing service
« Odpověď #8 kdy: 19. 09. 2024, 09:50:07 »
Díky za snahu. Jen pro upřesnění, nepotřebuju to číst powershellem, ale jen shellem (cmd.exe - tedy příkaz "reg query").

Jinak v "HKCR\.txt" nic zajímavého není, a chvilku s GPT chatem už jsem měl taky ;-)

nicméně myšlenka že se to nastavuje pro jednotlivé typy souborů je zajímavá, protože na mém obstarožním PC po změně té volby a potvrzení vyběhne peak CPU aktivity a PC  na dvě či tři vteřiny skoro "zamrzne", to by nasvědčovalo tomu, že se tam někde provádí dávková změna nad mrtě daty, ale nepodařilo se mi zjistit kde. A to jsem zkoušel už i odchytávat aktivitu v registrech procmonem :-/

Říkal jsem si, že přes PS by se s tím pracovalo pohodlněji.

Při vlepení jsem to nekontroloval, zprasila to schránka, Ve výpisu v prohlížeči je to dobře, tady několik řádků úplně chybí.

Ten filtr na přípony mě překvapil taky, protože z nastavení v GUI plyne, že by se to mělo týkat obsahu konkrétní složky, ať je v ní cokoli.

Re:Kde leží nastavení Indexing service
« Odpověď #9 kdy: 19. 09. 2024, 11:24:58 »
jenže ono jde o něco jiného: jak v commandlajně detekovat toto nastavení https://imgpaste.net/image/SD920N

Mno vsechny chujoviny kolem jsou tuhle ProgramData\Microsoft\Search takze si uzij dekodovani tech binarnich sragor. A navic ti to bude uiplne knicemu, protoze z toho stejne nijak nezjistis, jestli ten ci onen soubor je nebo neni aktualne indexovanej.

cesta %ProgramData%\Microsoft\Search obsahuje pouze (prázdný) adresář 'data' (win10, 64bit)

jjrsk

  • *****
  • 528
    • Zobrazit profil
Re:Kde leží nastavení Indexing service
« Odpověď #10 kdy: 19. 09. 2024, 11:34:17 »
Ne to rozhodne neobsahuje "prazdny adresar", to jen ty neumis ten folder as admin otevrit.

Kód: [Vybrat]
tree c:\ProgramData\Microsoft\Search\Data

C:\PROGRAMDATA\MICROSOFT\SEARCH\DATA
├───Applications
│   └───Windows
│       ├───Config
│       ├───GatherLogs
│       │   └───SystemIndex
│       └───Projects
│           └───SystemIndex
│               ├───PropMap
│               └───SecStore
└───Temp
    └───usgthrsvc

Re:Kde leží nastavení Indexing service
« Odpověď #11 kdy: 19. 09. 2024, 11:43:18 »
Máte pravdu. Bylo třeba dělat listing jako admin

jdu to zkoumat...