Fórum Root.cz
Hlavní témata => Windows a jiné systémy => Téma založeno: neregistrovany 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?
-
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í.
-
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 :-/
-
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.
-
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...
-
Mně to v zásadě funguje.
Příklad:
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.
-
jenže ono jde o něco jiného: jak v commandlajně detekovat toto nastavení https://imgpaste.net/image/SD920N
-
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.
-
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.
-
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)
-
Ne to rozhodne neobsahuje "prazdny adresar", to jen ty neumis ten folder as admin otevrit.
tree c:\ProgramData\Microsoft\Search\Data
C:\PROGRAMDATA\MICROSOFT\SEARCH\DATA
├───Applications
│ └───Windows
│ ├───Config
│ ├───GatherLogs
│ │ └───SystemIndex
│ └───Projects
│ └───SystemIndex
│ ├───PropMap
│ └───SecStore
└───Temp
└───usgthrsvc
-
Máte pravdu. Bylo třeba dělat listing jako admin
jdu to zkoumat...