2019年8月29日木曜日

VBscript で DOSコマンドの CertUtil を使って Base64 のデコードでバグ

VBscript を使って、Base64 のデコードをする必要があり、

objWSH.Run "cmd /c CertUtil -Decode A.txt B.jpg"

みたいなスクリプト書いたところ、
何度やっても失敗する。
デコードできないどころか、
このVBSファイル自体が消えてしまう。(自分自身が削除されるってあり得る?)

最初は、前後のファイル名の渡し方が間違ってて、
特にロングファイルネームなので、ダブルコーテーションの数とかが間違ってるのかと思って、さんざん試行錯誤を繰り返したけど、絶対失敗する。

Help を引いても、
-------------------------------------------------------------------------------
使用法:
  CertUtil [オプション] -decode 入力ファイル 出力ファイル
  Base 64 エンコード ファイルをデコードします

オプション:
  -f                -- 強制的に上書きします
  -Unicode          -- リダイレクトされた出力を Unicode として書き込む
  -gmt              -- 時刻を GMT で表示します
  -seconds          -- 時間を秒とミリ秒で表示します
  -v                -- メッセージを詳細に表示します
  -privatekey       -- パスワードと秘密キーのデータを表示します
  -pin PIN                  -- スマート カードの PIN
  -sid WELL_KNOWN_SID_TYPE  -- 数値 SID
            22 -- ローカル システム
            23 -- ローカル サービス
            24 -- ネットワーク サービス

CertUtil -?              -- 動詞の一覧 (コマンドの一覧) を表示します
CertUtil -decode -?      -- "decode" 動詞のヘルプ テキストを表示します
CertUtil -v -?           -- すべての動詞のヘルプ テキストをすべて表示します
-------------------------------------------------------------------------------
間違っていない。

試しに、以下のようなバッチファイルを実行したら、ちゃんとデコードされた。
CertUtil -Decode A.txt B.jpg

VBscript で実行したときだけ失敗し、ファイルが消失する。

余計にわからなくなって、半日が経過。

なんとなく、
objWSH.Run "cmd /c CertUtil -Decode A.txt B.jpg"
このスイッチの
「-」を
「/」に置き換えて、
objWSH.Run "cmd /c CertUtil /Decode A.txt B.jpg"
としたら、あっさり成功。
もちろん自分自身も消失せず。

俺の半日を返せ~。





2019年7月23日火曜日

結構使える Amazon Echo Dot と LSMini

Amazon Echo Dot と LSMini を導入しました。

ちょうどアマゾンでセールをやってたので、両方合わせて1万円以下で買えました。

最初は、設定方法がわからなくて、なかなか思い通りになりませんでしたが、丸1日かけて研究したら、そこそこ使える設定ができました。

我が家のリビングには、照明が2個ついていて、両方ともパナソニックのシーリングライトの同じ機種です。
横の和室にも、機種は違いますが、同じパナソニックでリモコンコードも同じものを取り付けています。リビングと和室は襖を開けると、3個の照明が全部見えます。

リモコンは3種類のコードが設定できるので、それぞれにリモコンコードを割り当ててあります。

この状態で、
「アレクサ ただいま。」
と言えば、Echo Dot が声を拾って、LSMini に指示を流し、LSMiniから放たれた赤外線で、リビングの照明が2個付きます。

「アレクサ 行ってきます。」
と言えば、同様の流れで、3台ともの照明が消えます。

便利なんですが、とにかく名前の付け方が難しい。

他にありそうな名前を付けると勘違いされてしまう。
例えば、Sony の BlueRayレコーダーで「AT500」という機種を持っているので、
「アレクサ エーティーごひゃく の電源入れて。」というと、
「すみません。アットごひゃく というデバイスが見つかりませんでした。」と宣います。

Echo Dot でAmazon Music を再生して、AVアンプの電源をアレクサで入れて、Bluetooth でアンプに飛ばせば、高音質で再生することもできるはず。

ところが、AVアンプを普通に電源入れる際には、「アレクサ アンプ付けて」で通るのですが、
アンプをBluetoothモードにするには、「ブルートゥースにして。」とかでは通らない。

色々試したところ、アンプの純正リモコンからブルートゥースのボタンを押すと、電源を入れてブルートゥースモードで起動することが分かった。

そこで、LSMiniでリモコンを作成して、Bluetoothボタンを記憶させた。
これを呼び出すには、「アレクサ ブルートゥースつけて。」ではやっぱりだめ。
仕方ないので、このボタンに「太郎」という名前を付けました。
こうすることで、「アレクサ 太郎つけて。」でAVアンプがBluetooth 待ち受け状態で起動します。
これで、Echo Dot と AVアンプが自動的にBluetoothのペアリングを行い(事前に一度設定が必要)AVアンプ経由で音楽が鳴り始めます。
これはめっちゃ便利です。

因みに、AVアンプの電源を切る時は、アンプのモードが何であっても「アレクサ アンプ切って。」で落ちます。(当たり前)

同様に、前述のAT500には、「次郎」という名前を付けました。
「アレクサ 次郎つけて。」でブルーレイレコーダーが起動します。
テレビは、入力ソースに合わせて、自動的に入力を切り替えますので、触る必要なしです。

ここで問題発生。
様々なデバイスに好き勝手に名前を付けたもんで、どれがなんという名前だったかわからない。
自分ではまだわかっても、家族が全く分からない。

結局、家族は「お父さん ブルーレイつけて。」が一番確実だと宣っています。




2019年5月5日日曜日

RaspberryPi3 に入れた OSMC から AVアンプに繋ぐときの注意

RaspberryPi3 に OSMC を入れて、KODI 専用機にして使っています。
普通に HDMI でテレビに繋いでいて、特に不満は無かったんですが、テレビを変えたことで、テレビから光ケーブルでAVアンプに音声出力できることになったので、繋いでみた。

ところが、5.1chで出力されず、2chになっている。
もちろん AVアンプは Dolby でも DTS でも対応している。

どうも OSMC 側から出る時点で既に2chしか出ていない様子。

設定を色々確認するが、どうも5.1chにならない。
かなりハマった。

真っ先に確認したのは、
「設定」→「システム」→「オーディオ」の中の「オーディオ出力デバイス」は、「Pi:HDMI」になっているし、「チャンネル数」も「5.1ch」もしくは「7.1ch」になっている。
同じく、「設定」→「システム」→「オーディオ」の中の「Allow passthrough」の項目も、もちろん「ON」になっているし、その下の、「ドルビーディジタル(AC3)対応レシーバー」関係も全部「ON」になっている。
これで、Raspi から出力されるのは全て5.1chで出力されるはず。
なのに、出ない!

色々ネットを彷徨っても、なかなか決定打が見つからない。
そもそも日本語の解説が少ない。

でも、見つけました。
なんと、「設定」→「システム」→「プレイヤー」の中にある、「ビデオ」項目の
「ディスプレイ同期周波数に合わせて再生」が「ON」
になっているとダメなそうな。
そんなところが関連するとは思ってなかった。
いつ変更したのかも覚えてないけど、なんとなく「ディスプレイ同期周波数に合わせて再生」してくれた方がいいんだろうなと思って、切り替えたんだろう。

これで、AVアンプ経由で Dolby や DTS でご機嫌なサウンドを出せるようになりました。

2019年1月13日日曜日

C:\windows\system32\config\systemprofile\Desktop は利用できない場所を参照しています。

C:\windows\system32\config\systemprofile\Desktop は利用できない場所を参照しています。

なんてことだ!
家族が使っていたパソコンが起動しないというので、見てみたら、
デスクトップ上にはごみ箱しかなく、スタートボタンを押しても何も反応しない。

起動途中に出るメッセージが上記のとおりです。
「OK]を押せば、ごみ箱しかないデスクトップまでたどり着けます。
しかし、起動するまでの時間も尋常じゃないほど長い。

「いつからこうなったの?」と聞いたら、「今年(2019)になってから。」
こりゃ絶対Windowsの更新に失敗してると確信。

色々ググったけど、なかなか決定打にはたどり着けず。

ただ、とりあえず、MicroSoft の
https://www.microsoft.com/ja-jp/software-download/windows10
からツールをダウンロードして、
インストール メディア を作成するのがよさそうというところまでわかりました。
--------------------------------------------------------------------
このツールを使用して、別の PC に Windows 10 をインストールするためにインストール メディア (USB フラッシュ ドライブ、DVD、または ISO ファイル) を作成する (クリックして、詳細情報の表示と非表示を切り替えます)
Windows 10 の新しいコピーのインストール、クリーン インストールの実行、Windows 10 の再インストールのために使用できるインストール メディア (USB フラッシュ ドライブまたは DVD) を作成するには、以下の手順に従います。
--------------------------------------------------------------------

このツールを使えば、今の状態はほとんど残して、再セットアップができそうです。
データはもちろん、自分で入れたアプリケーションもそのまま使えるようにできるそうです。
(結果、ちゃんと直りました。)

早速作って、ディスク(DVD)に焼いて、壊れかけてるPCにセットして、起動。
当然、このディスクから起動するものだと思っていましたが、どうも変?

1回起動するのにめちゃくちゃ時間がかかるので、色々試すのにめっちゃ時間がかかりました。

要は、
正常なパソコンで、上記サイトから作ったインストールメディアを作成。
正常なパソコンはここでお役御免。

壊れかけのPCで、ごみ箱だけのデスクトップ状態が表示されるまで、気長に起動させる。
その後、上記インストールメディアをセット。
Windowsキー+Rキーを押すと、「ファイル名を指定して実行」が表示されるので、
「cmd」と入力して、コマンドプロンプト画面を起動。

その際、豆知識ですが、「cmd」と入力して、普通に「Enter」だけを押すのではなく、「Shift」+「CTRL」+「Enter」を押すと、管理者権限で起動できます。
今回は管理者権限でなくてもいけると思います。

コマンドプロンプト画面で、ディスクをセットしたドライブを選択。
> D:
って感じですね。
次に
> Setup
を打てば、アプリケーションを残して再セットアップできる画面になりました。

この辺のことは、
こちらの方が書かれているブログが一番わかりやすかったです。
感謝感謝
http://dspckn.blogspot.com/2018/11/cwindowssystem32configsystemprofiledesk.html