Windowsの最近のブログ記事

随分前に作った Linux(CentOS)上で動くプログラム。
LZH ファイルを解凍し、そのファイルをほげほげするのだが、さすがにもう Windows 上で LZH ファイルを作るのもきつくなってきた・・・ということで ZIP ファイル対応を依頼されたのだが(例えば、7-Zip なんかでも LZH 形式には対応してないからな(^^;)・・・ハマった(^^;

yum で入れた unzip は -O オプション(アーカイブ内のファイル名のエンコードが指定できる)が使える(以前のバージョンではパッチを当てないと駄目だった)ので、例えば unzip -Ocp932 -l exsample.zip で、exsample.zip の中の「かわいい中年男性一覧.csv」みたいなファイル名は取ってこれるんだけど、これをディスク上に解凍するとファイル名が化けまくる・・・

ちなみに、プログラムは EUC-JP で書かれている。なにせ、もう、18年前に初版公開したプログラムだからな(笑)。

これ、lha コマンドは EUC-JP でファイル名を出力するパッチが当たっていたので問題なかったんだけど、unzip は「サーバの locale のエンコードでファイル名が作られる」ため、実行サーバの locale である UTF-8 のファイル名となる。

他のプログラムにも影響あるから、なんとか EUC-JP でファイル名を設定してほしいなあ。

しかし、unzip にそのようなオプションはない。結局、unzip を実行する前に、locale を EUC-JP にする形でなんとかなった。

(例)
export LC_CTYPE=ja_JP.eucJP; /usr/bin/unzip -OCP932 -d /tmp exsample.zip

このプログラムは実行後シェルを閉じるので、LC_CTYPE の設定を投げっぱなしだが、同一シェル内で他のコマンドなど実行するのなら、

export LC_CTYPE=ja_JP.UTF-8

で locale を元の UTF-8 に戻すこと。

今日、急に Windows 10 Pro で音が出なくなった。

とりあえず、コマンドプロンプトから

C:\>net stop "Windows Audio"

C:\>net start "Windows Audio"

C:\>net stop AudioEndpointBuilder

C:\>net start AudioEndpointBuilder

てな具合にオーディオ関係のサービスを再起動したらしばらくは調子よかったんだけど、また音が出なくなった。

C:\>net start "Windows Audio"
システム エラー 1068 が発生しました。

依存関係サービスまたはグループを起動できませんでした。

という具合に起動もできない。
調べてみると、AudioEndpointBuilder が「停止処理中」のまま固まっていた。
こうなると、タスクマネージャーからも殺せないし、サービスの再起動もできない(停止処理中だから起動ボタンとかも無効化されている)。

コマンドプロンプトから強制的に殺してみる。プロセスIDを調べて、taskkill コマンドで強制停止。

C:\>sc queryex AudioEndpointBuilder

SERVICE_NAME: AudioEndpointBuilder
        TYPE               : 30  WIN32
        STATE              : 3  STOP_PENDING
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x160
        WAIT_HINT          : 0x1388
        PID                : 7312
        FLAGS              :

C:\>taskkill /pid 7312 /f
エラー: PID 7312 のプロセスを強制終了できませんでした。
理由: 実行中のタスクのインスタンスがありません。

ありゃあ・・・いわゆる「ゾンビプロセス」になってるんか?
UNIX や Linux ではゾンビ化したプロセスも殺せる(消せる)が、Windows は駄目なんかな?

WMIC コマンドを使ってみる。

C:\>WMIC PROCESS WHERE "ProcessId = 7312" GET Name,ProcessId,CommandLine /FORMAT:LIST


CommandLine=C:\Windows\System32\svchost.exe -k LocalSystemNetworkRestricted -p -s AudioEndpointBuilder
Name=svchost.exe
ProcessId=7312

なるほど。ちゃんとまだ 7312 プロセスは認識されてるな。まあ、ゾンビだからな。早速、プロセスの削除。

C:\>WMIC PROCESS WHERE "ProcessId = 7312" DELETE
インスタンス \\DESKTOP-5077EPO\ROOT\CIMV2:Win32_Process.Handle="7312" を削除しています
エラー:
説明 = アクセスは拒否されました

駄目だこりゃ。
もう、こうなると再起動しかないということか。Windows 格好悪いなあ。

時々、技術者の中でも「UNIX 系 OS より Microsoft Windows が好きだ!Windows は優れた OS だ!」という奇特な意見を聞くことがあるが、ゾンビ化したプロセスを消せない OS って・・・
32bit 版の ODBC ドライバー経由で DB に接続する Access アプリを仕事で使わないといけないんだけど、メインのノートパソコンの Office は当然 64bit 環境なので、Access でデータソースの新規作成をしようとしても 32bit 版の ODBC ライバーが一覧に出てこない。

64bit 版Access で 32bit 版ODBCドライバーって使えないのかぁ~。上位互換で可能なのかと思っていた・・・

というわけで、新しい MS-Office 買ってきて、32bit版を新規インストール。

DVD版を買ったので、ドライブに DVD を突っ込むと「Setup.exeを実行するか?」と聞かれたので Yes とすると、いきなりインストールが実行された。64bit版の・・・

途中で 64bit/32bit のどっち?って聞かれるのかと思ってたわ・・・
そういえば昔の話だが、Office って 64bit版の開発が遅れてて、64bit の Windows OS にインストールするときも、勝手に 32bit版が選ばれるので、あとでもう一度 64bit版を入れ直したりってことがあったな(^^; 今は勝手に 64bit版が選ばれるのね(笑)

インストールを途中で止めると中途半端にファイルが残ったりしそうなので、最後までインストールしてからアンインストール。改めて、Setup32.exeを実行し 32bit版 Office をインストールした。

で、無事 32bit版 ODBC ドライバーが使えることを確認。 

でも、よく調べたらこの DB、64bit版の ODBC ドライバーもリリースしてるんで、それ使えばいいんじゃない?とも思ったのだが、アプリのメーカーの動作保証対象が 32bit版なので仕方ないのである・・・(^^;
Windows10 では、画像ファイル(JPEG とか PNG とか)は「フォトアプリ」ってやつで開くけど、これ、使い勝手が悪い・・・というか、なんか仕様が変やな。

例えば JPEG 画面を表示していても、時々、「現在サポートされていない形式であるか、ファイルが破損しているため」という理由でフォトアプリが落ちる(画面が勝手に閉じてしまう)のである。

 20211106_windows1.jpg

クラウド上のストレージに置いたでっかいファイルを見てるときに発生しやすいかな?
まだデータ受信中なのにファイルチェックを行い、当然まだ不完全な状態のファイルを「壊れている」と誤解してるみたいだなあ(^^;。そんなのもうバグやで、バグ(^^;

Microsoft って OS  も作ってるから技術力が高い会社って素人さんは思ってそうだけど、業界内での技術的評価は決して高くない。基本的に「井の中の蛙」的に自社技術・自社だけの常識を集積してきた会社なので、こういう初歩的なバグも「Microsoft の仕様です」と恥ずかしげもなく言い切るのである。

というわけで、この「フォトアプリ」というバグ含みの糞アプリを使うのをやめ、昔の Windows で画像ビュワーとして使われていた「Windows フォト ビューアー」で画像表示を行うようする。

・・・が、これが実はレジストリを触ったりけっこう大変らしい。そのあたりを自動でやってくれるのが「Restore Windows Photo Viewer to Windows 10/11」というフリーソフト。

ダウンロードした RestoreWindowsPhotoViewerSetup.exe を実行しインストールしたら即起動。
特に設定等触らずそのまま「Restore Windows Photo Viewer」ボタンを押す。これで「画像(フォト)の既定のアプリにフォトビューアーが選択できる状態」になったので、設定画面から追加。

 20211106_windows2.jpg

「既定のアプリ」で「フォトビューアー」のところが「フォト」になっているので、ここで右ボタンクリックでプログラムの一覧を表示し、「Windows フォト ビューアー」を選択する。フォトビューアーのアプリが「Windows フォト ビューアー」に変更された。

「フォトアプリ」でエラーになっていた画像もちゃんと表示される。
mouse computer のノートPCで Windows Update に失敗する。

Windows Update の画面でインストール 100%になるのだが、再起動時に「更新プログラムを構成できませんでした 変更を元に戻しています コンピュータの電源を切らないでください」と自動修復が走ってしまい、Update 前の状態に戻されてしまう。

OS のバージョンは Windows 10 Home(21H1)。
失敗している Update は KB5004296 である。

で、こういう時はどうするのかというと、「Microsoft Update カタログ」からアップデートファイルをダウンロードして、それを PC 上で実行してやると・・・うまくいくことがある。


まず、上記サイトにアクセスし、KB5004296 などで検索。そうしないとえらい量のアップデートファイルが一覧表示されて、目的のファイルを探すのが大変だぞ(笑)

うまくいっていないアップデートファイルが見つかったらダウンロード。拡張子が MSU のファイルが落ちてくるのでダブルクリック。Windows update スタンドアロンインストーラー(Wusa.exe)が実行される。

「更新プログラムのダウンロードとインストール」という窓が開きインストールが始まるので、あとは終了するのを待つだけ。
しかし、この画面で表示される処理状況を知らせるインジケーターはかなりいいかげん。いや、まあ、アプリケーションが表示するインジケータなんかだいたいいい加減なんだけど、その中でも群を抜いていい加減だ。

 20210904_windowsupdate.jpg

なので、「え?まだこんだけ?」とか心配しないように。最後に一気に動くから(笑)

インストールが終了したら「再起動」だ。
これでだいたいうまくいく。

わくわくと画面を見つめる俺の目に飛び込んできたのは、「更新プログラムを構成できませんでした」の文字。青いバックが目に染みる・・・

Windows が悪いのか?mouse computer が悪いのか?

どちらにしてもがっかりである。
こういう場合はもう手の打ちようがないので、そのまま次の大型アップデートを待つしかない・・・かな?
PCの保守をさせてもらっている会社で使われているメールソフトが、Becky! Ver2 である。
Becky! 懐かしい!まだ生き残っていたか。
1990年代から 2000年代にかけて、それなりのユーザを獲得していたメールソフトやね。

その Becky! が起動しなくなった。

ネットワークドライブをメールフォルダにされているのだが、Becky! が起動したままでルータを切ったら、Becky!が「応答なし」の状態で固まってしまって強制終了。そしたら二度と起動しなくなったのである(^^;;
一回だけスプラッシュ画面が表示されたが、それ以降はうんともすんとも。

まあ、これは Becky!あるあるで、起動時に作成された

becklock.$$$
becklock.nam

というロックファイルが残っているためである。

メールフォルダ内を探していき、AddrBook フォルダ内にこれらのファイルが残っているのを発見。日付がその日の朝になっていたので、朝イチで Becky! を起動したときに作られたものだろう。これを削除したら Becky! は復活した。

で、問題は「メールフォルダ内を探していき」の部分である。
UNIX なら find / -name 'becklock.$$$' -print とかすれば一発でヒットするのに、Windows ではファイルエクスプローラーの検索窓に becklock.$$$ と打ち込んでもヒットしないのだ。

「ああ、$はエスケープしないとだめか」と becklock.\$\$\$ としても駄目。「ドットもか」と becklock\.\$\$\$ としてももちろん駄目である。なのでフォルダをひとつひとつ見ていった。

なんか、Windows 独自のエスケープの仕方があって、'~'(チルダ)を使ってアレコレする。
あまりの独特すぎて説明するのが面倒なので、気になる人は自力でググっていただきたい。

無事、Becky! の起動に成功した俺が思ったのは、ただただ「Windows はどこまで自ら糞 OS の道を歩み続けるのかのお」ということであった・・・(笑)
20210827_remote_pc_error.jpg

職場のネットワークに VPN で接続して、職場の PC をリモートデスクトップで自宅 PC から操作してるんだけど、その職場の PC からお客さんのネットワークに入るために別の VPN を張ろうとするとリモートデスクトップのセッションが切れて、二度とリモートデスクトップ接続できなくなるな?

「セッションが終了しました。リモートPCに対して別の接続が確立されたため、接続は切断されました。」ってエラーになる。

職場で俺の PC を操作してもらい、お客さんのネットワークへの VPN 接続を切ってもらえばまた復活するんかな?このメッセージだとそういう気がするな。

ネットワーク的に別に問題ない気がするんだけど、これはリモートデスクトップの制限なのか?まあ、自宅から職場ネットワークへの VPN 接続は切れてないんでそうなんだろうなあ(^^;
お客さんのところの mouse computer のノートPC(W940TU)で Windows Update を実行するとエラーになる。
対象のアップデートは KB5003637。キーボード、マウスなどのセキュリティアップデートのようだ。

いや、正確にはダウンロードからインストールまで終了する。しかし、再起動を行うと OS の修復が実行され、Windows が立ち上がりはするが「最近インストールされた更新プログラムを削除して、起動エラーからデバイスを回復しました。」のメッセージが表示される。

OS は更新プログラムインストール前の状態に戻っているので、いつまで経っても Windows Update の度に KB5003637 のインストールが繰り返される。

環境はこんな感じ。

CPU N2940 1.83GHz
メモリ 4.0GB(3.88GHz使用可)
Windows 10 Home 20H2

Windows は 8 から 10 にバージョンアップされたもののようである。

ググってみると、同じように「何度も失敗する」という人が色々なところに質問を投げていたが、結局未解決で終わっていた。

そもそも、KB5003637 は色々とトラブルが報告されているアップデートのようだな。中にはレジストリを手で直さないといけないような不具合もあるようで・・・。Microsoft、仕事はちゃんとやろうな。

まあ、それよりなにより、KB5003637 がインストールできんのをどうにかしてくれ>Microsoft
仕事で使っているノート PC は一週間電源入れっぱなしで週末に電源を落とす。帰る時には蓋を締めてスリープ状態にして帰る。
で、今朝、蓋を開くと画面がなんか変。通常ならスリープ状態から復帰するためのロック画面が開くはずだが・・・

20210420_win10.jpg
左下に時間と日付が表示されているが、画面は真っ黒。
そして、画面の左上と中央に、検索の虫メガネマークがついた入力欄が二つ。

入力欄の中にはうっすらと、いわゆる入力ヒントが表示されているが、左上の入力欄には「湖がエメラルド色やターコイズ色に煌めき、木々が鮮やかな紅葉に染まるころ...」と。中央の入力欄には「この静かな湖では、大きなレースも行われますが、参加できるのは手漕ぎの船だけで...」という文。

なんだこれ?

ああ、これ、ロック画面に表示される風景画像の説明文か。

そして、左下の日付、これもロック画面のものだ。

単に(いや、単にというのもおかしいけど)ロック画面が壊れて表示されているだけか・・・

しかし、Ctl+Alt+Del も効かず、電源ボタンも駄目で、結局、電源ケーブル抜いた状態でバッテリーを外して電源OFF。やれやれ。

<追記>
画面がほこりだらけなのはご容赦ください(笑)

お客さんのところで利用しているシステムでは、サーバ側から匿名ログインでクライアントPCの共有フォルダに一時ファイルを書き込む設定になっている(その是非については、セキュリティはしっかり確保できている前提なので、ここであーだこーだという知ったかぶりのご指摘は無用です(笑))。

しかし、なぜか 32bit 版の Windows 10 Pro では「パスワード保護共有を無効にする」の設定にできないので、代わりに Guest ユーザのパスワードを空にしておく必要があるんだけど、何かの拍子に(大概、Windows Update のときだが)空にしていたパスワードが勝手に再び設定されてしまう。

そんなときはサーバ側で「ホルダーがネットワーク上に見つかりません」のエラーとなってしまうので、Guest ユーザのパスワードを空に設定し直す必要がある。
んが、俺、日頃あまり Windows の設定まわりとか触ることがないので、急にそうなると「Guest ユーザのパスワードって、どこで設定するんだっけ?」となるのだ。(Windows は UNIX 系の OS と違って、一般のユーザと Guest ユーザなどの特別なユーザの設定画面を分けてたりするんでね。バカだね。一元管理できるようにすればいいのに。何の問題があるのかね?)

ということでメモっとく(笑)

(1) ファイル名を指定して、lusrmgr.msc(ローカルユーザ・グループ管理画面)を開く

(2) ユーザ→Guest を選ぶ

20210102_lusrmgr1.jpg

(3) Guest の「他の操作」をクリックし、「パスワードの設定」を選ぶ

20210102_lusrmgr2.jpg

(4) 「復元できない情報の損失が・・・」と脅されるが、気にせず「続行」する

(5) 「Guestパスワードの設定」画面でパスワードを設定(何も入力せず、空で)

(6) 「パスワードは設定されました。」と表示されればOK。lusrmgr.mscを閉じよう

これだけ。

この状態でもう一度「パスワード保護共有を無効にする」の設定にして(いや、多分こんなことをする必要はないんだけど念の為(笑))、サーバ側からクライアントの共有フォルダにパスワードなしで(入力画面も開かず)ログインできるか確認する。

うまくいったかの???

このアーカイブについて

このページには、過去に書かれたブログ記事のうちWindowsカテゴリに属しているものが含まれています。

前のカテゴリはUNIXやLinuxです。

次のカテゴリはデータベースです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら