📔
Kindle for PC (Windows) のけしからん振る舞いをなんとかする
けしからんポイント:
- 消したはずのデスクトップショートカットを勝手に作り直す
- グローバルホットキーを勝手に設定する
対策
PowerShell でクラスを作成して下記の処理を仕込みます。
- デスクトップに
kindle.lnk
があれば削除 - スタートメニューにあるほうの
kindle.lnk
からはショートカットキーを削除する
コード
class AmazonKindle {
[bool]$installed
# コンストラクタ
AmazonKindle() {
$kindlePath = $env:LOCALAPPDATA | Join-Path -ChildPath "Amazon\Kindle\application\Kindle.exe"
if (Test-Path $kindlePath) {
$this.installed = $true
}
else {
$this.installed = $false
}
}
# メソッド
NoiseClear() {
if (-not $this.installed) {
return
}
$lnkName = "kindle.lnk"
$desktopLnk = $env:USERPROFILE | Join-Path -ChildPath "Desktop" | Join-Path -ChildPath $lnkName
if (Test-Path $desktopLnk) {
$desktopLnk | Remove-Item
"removed '{0}' from desktop." -f $lnkName | Write-Host
}
$startmenuLnk = $env:APPDATA | Join-Path -ChildPath "Microsoft\Windows\Start Menu\Programs\Amazon\Amazon Kindle" | Join-Path -ChildPath $lnkName
if (Test-Path $startmenuLnk) {
$shell = New-Object -ComObject WScript.Shell
$shortcut = $shell.CreateShortcut($startmenuLnk)
if ($shortcut.Hotkey.Length) {
$shortcut.Hotkey = ""
$shortcut.Save()
"removed hotkey from start menu lnk." | Write-Host
}
}
}
}
個人的には $Profile
内の prompt
関数から呼び出すようにしています。
function prompt {
[AmazonKindle]::New().NoiseClear()
}
公式で対応してほしいものです……。
Discussion