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:

Nastavení oprávnění pro sdílení uživatelských kalendářů v Exchange Online/Office 365

$credentials = Get-Credential -Credential pnovotny@lotraco.cz
Write-Output "Getting the Exchange Online cmdlets"

$Session = New-PSSession -ConnectionUri https://outlook.office365.com/powershell-liveid/ `
    -ConfigurationName Microsoft.Exchange -Credential $credentials `
    -Authentication Basic -AllowRedirection

Import-PSSession $Session

Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited | Foreach-Object{

    $mbx = $_ | Select ExchangeGuid, UserPrincipalName, DataBase

    $userFolder = $_.alias +":\Kalendář"
    Set-MailboxFolderPermission -Identity $userFolder -User Default -AccessRights Reviewer
}

 

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.

Text z „message boxů“ není nutné přepisovat

Netuším jak dlouho tato feature funguje, ale i kdybych ji objevil o měsíc dříve (doufám že nikoliv), ušetřila by mi pár desítek minut života – zdá se to jako pitomost, ale přepisovat do vyhledávače hlášku je trošku pruda, obzvláště pokud chcete text samotné hlášky vložit jako text do WIKI 1:1, protože ze screenshotu se text nezaindexuje, minimálně zatím…

Přitom stačí focus na dialog a klasicky CTRL+C  🙂  #nocomment

Výsledkem je text uložený ve schránce:

 

[Window Title]
Remote Desktop Connection

[Content]
The remote computer that you are trying to connect to requires Network Level Authentication (NLA), but your Windows domain controller cannot be contacted to perform NLA. If you are an administrator on the remote computer, you can disable NLA by using the options on the Remote tab of the System Properties dialog box.

[OK]

BOŽÍ!

Zjištění uloženého WIFI hesla

To, že operační systémy všech výrobců, naprosto ignorují zabezpečení vloženého WIFI hesla, je obecně známá věc, že na to ale existující oficiální příkazy v OS, to jsem fakt netušil.

Stačí k tomu jen dva příkazy, jeden pro vypsání všech uložených WIFI sítí:

netsh wlan show profile

wifi_list

Pak už jen stačí zadat název sítě, pro kterou chcete zjistit heslo:

netsh wlan show profile "Internet_2E" key=clear

wifi_detail

nameof (C# Reference)

Další skvělá feature C# 6.0, žádné hardcoded řetězce:

using Stuff = Some.Cool.Functionality
class C {
static int Method1 (string x, int y) {}
static int Method1 (string x, string y) {}
int Method2 (int z) {}
string f<T>() => nameof(T);
}

var c = new C()

nameof(C) -> "C"
nameof(C.Method1) -> "Method1"
nameof(C.Method2) -> "Method2"
nameof(c.Method1) -> "Method1"
nameof(c.Method2) -> "Method2"
nameof(z) -> "z" // inside of Method2 ok, inside Method1 is a compiler error
nameof(Stuff) = "Stuff"
nameof(T) -> "T" // works inside of method but not in attributes on the method
nameof(f) -> "f"
nameof(f<T>) -> syntax error
nameof(f<>) -> syntax error
nameof(Method2()) -> error "This expression does not have a name"

 

 

Zdroj: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/nameof