Odstranění uzamčených souborů „The action cannot be completed because the file is open in another program“

V případě kdy nelze odstranit nebo aktualizovat soubor a Windows ve svém dialogu nespecifikují proces, který daný soubor má exkluzivně zamknutý:

Pro zjištění zdroje zámku je asi nejjednodušší využít aplikaci Process Explorer (https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer) a pomocí funkce vyhledání na toolbaru a následně proces ukončit:

Odstranění akcí z kontextového menu souboru/složky ve Windows

Na správu všech možných nastavení Windows existující spousty specializovaných nástrojů, které však často před samotným vyřešením problému přinesou hromadu dalších, virů nevyjímaje. Tak se mi podařilo úspěšně si nainstalovat virus, respektive těžící aplikaci nějaké krypto měny, odstranění nebylo zrovna triviální, obzvláště pokud si myslíte, že nejste BFU a vypnete si UAC 🙁 Po odstranění viru mi ale zůstalo spousta zajímavých nastavení, včetně nových kontextových menu v exploreru Windows, vtipně nazvaných Compress File nebo DeCompress File, což samozřejmě neudělalo nic jiného, než že nainstalovalo znovu svůj vir do startup aplikací, Windows scheduleru atd…

Odstranění kontextových menu je možné prostým Registry editorem (regedit,exe) a odstraněním celých nechtěných klíčů v následujících umístěních:

HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers
HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers
HKEY_CLASSES_ROOT\*\shell

Ukázka umístění:

Okamžitě po odstranění položka z kontextové menu zmizí, není tedy nutný ani restart PC.

Převod textu na řeč ve Win10 – jak si ušetřit čas a rozbít si produktivitu multitaskingem

Přemýšlel jsem, jak si ušetřit čas a některé aktivity paralelizovat, první co mě napadlo a chtěl jsem vyzkoušet, strojové čtení textů různých blogů, zpráv, twitteru, tedy ideálně v browseru označit text a kontextovým menu přidat do fronty k přečtení. Druhá předpokládaná feature byla nastavení rychlosti čtení, tedy zrychlit cca o 50% čtení a i zde najít časové rezervy.  Nečekal jsem žádné zázraky, ale že nebude nic pro ČJ?

První cesta mě i napadla, nějaký translator a zadat do něho překlad z CZ a spustit si čtení:

Pak jsem ale zjistil, že ve Win10 Creators Update je český TTS (text-to-speech) pod hlasem Microsoft Vit Mobile, nevím jestli nad tím někdo v MS přemýšlel, ale nechápu jak by to z toho mohl někdo poznat, naštěstí „Vit“ neznamená, že to pro MS namluvil Marek Vít 🙂 to bych snad opravdu musel přejít na Linux.

Pak už jen stačí doinstalovat aplikaci využívající API TTS ve Win10 (což také není zrovna nějaká hitparáda ve WinStore vzhledem k tomuto novému API), nerozumím proč to nemá alespoň EDGE nativně, nicméně existují aplikace jako ReadAloud (ve WinStore), které dobře poslouží. Není tam sice integrace do ostatních aplikací jak bych čekal, ale i za copy&paste jsem vděčen, respektive po zkopírování do schránky to rovnou nabízí čtení 🙂

Pitomé je, že když všechno toto vyzkoušíte, přijdete na to, že se opravdu nelze reálně soustředit na tolik věcí najednou a buď si nepamatujete práci, nebo „podcast“, každý si na to musí přijít sám 🙂

Deaktivace náhledů aplikací v hlavním panelu (taskbar) ve Windows 10

Deaktivace často otravných náhledů aplikací v taskbaru je možná pouze přes registry

Deaktivace lze tedy provést spuštěním regedit.exe a v cestě Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced vytvořte DWORD klíč ExtendedUIHoverTime s hodnotou počet sekund * 1000, v případě hodnoty 10000 se tak náhled zobrazí až po 10 sekundách od najetí myši, tedy neprudí při náhodném přejetí…

BTW, Editor registrů (regedit.exe) má po asi 20 letech novou funkci! Zadání celé cesty! #Win10

Editor registrů (regedit.exe) má po asi 20 letech novou funkci! Zadání celé cesty! #Win10

Myslel jsem si, že jsem si toho jenom dříve nevšimnul, ale opravdu je to nová funkce až ve Windows 10 🙂

Nyní je možné zadat celou cestu, například Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced přímo do textboxu pod menu a automaticky se dostanete do zadané větve, hurá!

Cisco VPN Client and Windows 8 Customer Preview (Developer Build)

Cisco VPN klient nefunguje na Windows 8  CP, lze sice standardně nainstalovat a spustit, není možné ale sestavit spojení.

Řešení jsou dvě:

[more]

1) nepoužívat Cisco klienta a nainstalovat si Shrew VPN klienta (http://www.shrew.net/download/vpn/vpn-client-2.1.7-release.exe), který také podporuje import PCF souborů Cisca a na Windows 8 CP funguje bez problémů

2) upravit registr Cisco klienta, tedy:

  • otevřít registry Windows (regedit.exe)
  • najít klíč HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CVirtA
  • změnit hodnotu v DisplayName z „@oem8.inf,%CVirtA_Desc%;Cisco Systems VPN Adapter for 64-bit Windows” na „Cisco Systems VPN Adapter for 64-bit Windows
  • restartovat VPN klienta a vyzkoušet

Zjištění typu platformy Windows 32bit/x64 v C#

Viděl jsem několik možností jak zjistit o jaký druh platformy se jedná, od absurdní kontroly existence adresáře “Program Files (x86)” (a ještě fixně na disku C), přes kontrolu environment variables, až po docela zajímavou konstrukci

public bool Is64bit() {
    return Marshal.SizeOf(typeof(IntPtr)) == 8;
}

Tuto funkce jsem sice nezkoušel, ale podle mého názoru určitě nebude fungovat pokud změníte target platform v projektu na 32bit a použijete tuto funkci na x64.

Nakonec mi přišlo nejrozumnější volat API funkci Windows (nemusel jsem řešit problém s unsafe assembly):

[more]

private enum Platform
{
    X86,
    X64,
    Unknown
}
 
internal const ushort PROCESSOR_ARCHITECTURE_INTEL = 0;
internal const ushort PROCESSOR_ARCHITECTURE_IA64 = 6;
internal const ushort PROCESSOR_ARCHITECTURE_AMD64 = 9;
internal const ushort PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF;
 
 
[StructLayout(LayoutKind.Sequential)]
internal struct SYSTEM_INFO
{
    public ushort wProcessorArchitecture;
    public ushort wReserved;
    public uint dwPageSize;
    public IntPtr lpMinimumApplicationAddress;
    public IntPtr lpMaximumApplicationAddress;
    public UIntPtr dwActiveProcessorMask;
    public uint dwNumberOfProcessors;
    public uint dwProcessorType;
    public uint dwAllocationGranularity;
    public ushort wProcessorLevel;
    public ushort wProcessorRevision;
};
 
[DllImport("kernel32.dll")]
internal static extern void GetNativeSystemInfo(ref SYSTEM_INFO lpSystemInfo);
 
private static Platform GetPlatform()
{
    SYSTEM_INFO sysInfo = new SYSTEM_INFO();
    GetNativeSystemInfo(ref sysInfo);
 
    switch (sysInfo.wProcessorArchitecture)
    {
        case PROCESSOR_ARCHITECTURE_AMD64:
            return Platform.X64;
 
        case PROCESSOR_ARCHITECTURE_INTEL:
            return Platform.X86;
 
        default:
            return Platform.Unknown;
    }
}

TFS 2010: No connection could be made because the target machine actively refused it.

Pokud si nainstalujete Team Foundation Server 2010 a zobrazuje se Vám tato hláška při snaze vygenerovat report: “No connection could be made because the target machine actively refused it.”

Stačí pouze spustit Windows službu “SQL Server Analysis Services”  a nastavit jí spouštění na automatic 🙂

Snad to někomu ušetří hodiny hledání chyb v nastavení Reporting Services…..

Upgrade Windows 7 RC na RTM

Pro upgrade Win7 release candidate na výslednou krabicovou verzi Windows 7 je potřeba provést následující kroky:

  • koupit originální DVD s Windows 7 (případně stáhnout ISO soubor s MSDN subscription)
  • zkopírovat někam na pevný disk obsah celého DVD
  • otevřít v poznámkové bloku soubor:
    {PATH}\sources\cversion.ini
  • hodnotu parametru MinClient přepsat na “1000”
  • uložit soubor
  • vypálit na DVD a provést přímo z Windows 7 RC/BETA upgrade (BOOT nebude fungovat, toto DVD bude pouze pro jednorázovou migraci)

Stejný postup platí pro upgrade Windows 7 BETA na RTM.

Tento postup opravdu funguje, není však logicky podporován Microsoftem, jediný správný a legální postup je kompletní reinstalace!!!