Windowsの最近のブログ記事

いつも持ち歩いている Macbook Pro には VMware Fusion の上で Windows 7 を動かしていて、そこで使っている Microsoft Office は 2003 である。

お客さんの中に、昔うちで Access と Excel を使って作ったシステムの利用者さんがいらっしゃり、そのバージョンがずっと 2003 のままで動いているので、メンテナンス用に残しているのだ。

しかし、他のお客さんから Excel で資料をもらうと、最近は大概 .xlsx ファイルである。無理やりな方法はなくもないが、基本的に Excel 2003 では開けないので、Excel だけ 2010 を入れている。

で、Macbook はこんな感じなのだが、自宅で仕事で使っている PC は(2、3台あるが)全部 Microsoft Office 2013 である。
そのため、自宅では .xls ファイルも 2013 で開くので、それで上書き保存などしてしまうと(マクロなどが含まれていると特に)、.xls ファイルなのに 2003 ではエラーが出て開けなくなってしまうのである。

そこで、Macbook でも .xls ファイルの起動ソフトを Excel 2010 にしたいのだが、これがうまくいかない。

Microsoft Office の「バージョンの異なる Office が同じレジストリエントリを利用する」という謎仕様のためである。

例えば「ファイルを開くプログラムの選択」で「参照」ボタンを押し、「C:\Program Files\Microsoft Office\Office14\EXCEL.EXE」を指定しても、選ばれている Excel のリンクを変更することはできない。EXCEL.EXE はあくまで最初にインストールした EXCEL.EXE が正(レジストリに登録されている)なのである。

で、コマンドプロンプトで、

"C:\Program Files\Microsoft Office\OFFICE14\EXCEL.EXE" /regserver

と実行すると、2010 に規定の EXCEL が切り替わるはずなんだけど、「最初に Office 2003 をインストール→ Excel 2010 だけ更にインストール」という入れ方の場合は駄目なのか、全然切り替わらなかった・・・

まあ、先に Excel 2010 を立ち上げて、それから .xls ファイルを開けばいいんだけど、面倒くさいんでねえ。ファイルをダブルクリックで、ちゃんと Excel 2010 が起動するようにしたいわ・・・

方法を御存知の識者の方がいらっしゃたら、ぜひご教示を。
Windows 7 Home + MS Aceess 2003 というレガシーな環境で、新元号「令和」対応をしないといけないんだけど、VB モジュールで

Format("令和01年05月01日", "yyyy/mm/dd")

こんな風に Format 関数の結果をセットしてみても、2019/05/01 が返ってこない(Null になる)。

Windows の開発環境に詳しい方に聞いてみると、サポートの切れている MS Access 2003 でも、Format 関数は OS のレジストリを見るので、 OS がサポートされていれば大丈夫。ただし、まだ「令和」関係の Windows Update は提供されていないとのことだった。

そうか、もう「令和」関係の Update は出てて、Office 2003 系はサポート外だから駄目って話なのかと思ってた。
そうか、そうか、まだ Update が出てないだけなのね。

「とりあえず手動でレジストリに令和の情報を登録すれば正しく Format 関数も動きますよ」ということだったので、ググってみると、


こういうページがあった。

その中に書いてあるとおり、コマンドプロンプト画面で、

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras /v "2019 05 01" /t REG_SZ /d "令和_令_Reiwa_R"

を実行。「この操作を正しく終了しました。」のメッセージを確認後、念の為 MS Access 2003 の画面を再起動。
見事、Format("令和01年05月01日", "yyyy/mm/dd") で 2019/05/01 が返ってくることを確認した。

マウスが使えないと復活作業もしづらいんで、新たに PS/2接続のマウスを買ったり(家にひとつくらいあると思ってたんだけど見つからず(^^;;)と無駄な出費もしたが、やっと復活しホっとしている。

まあ、ショートカットキー調べてマウス無しで作業する面倒臭さを考えたら、そりゃマウス買った方がええからのお。金で解決じゃ。(ま、1,100円だけど(笑))

20190314_usb.JPG
結局、日本 ASUS のサイトから、ASUSTeK H81M-E 用の最新の USB ドライバを落としてきてインストールしたらすぐ復活した。

もしかしたら、前回、H81M-E 用のドライバ(オーディオとか、ネットワークとか)をまとめてインストールし直したのだが、その時、USB コントローラのドライバのインストールを途中で終わらせちゃったのかもしれない。
インストーラの動きを見ていると、先に古いドライバを削除していたので、ここで何らかの理由で終わらせちゃったとか。(記憶にはないが(^^;)

とりあえず、USB 接続している HDD や DVD ドライブが接続されたので、USB ポートは無事復活した様子。リブートしてみたけど大丈夫みたい。まだ、USB マウスは接続してみていない。
このまま PS/2 マウスでもいいんだけど、残念ながらホイールが反応せんのよね(^^; HID準拠じゃないんかいな?

<追記>
何をしたわけでもなく、ただ Windows を再起動したら、なぜかホイールが使えるようになった。
まあ、それがまさに Windows なんだけど、なんだかなあ(^^;
また自宅 Windows 機の障害である。
発生したのは、ASUSTeK H81M-E をベースに組んだ microATX 機だ。Windows 7 Professional が載っている。

Windows Update のために再起動したら、一切マウスが反応しなくなった。
正確には、USB I/F(インタフェース)が全て死んでいる。だから USB 接続のマウスも一切使えないわけだ。

ちなみに、このマシンのキーボードは PS/2接続なので使える。レガシーでよかった(笑)

20190310_asus_bios.JPG最初、ハードウェア的な問題かと思ったのだが、UEFI BIOS 画面ではマウスも USB 接続した外付け DVD ドライブも生きている。

その後、Windows が起動している最中に USB I/F が全部死んじゃう感じ。
外付け DVD ドライブのランプが未接続のオレンジ色に変わるのでわかる。

背後の 6箇所の I/F も、フロントの 2箇所の I/F も USB は全滅である。

昨夜は状況確認で終わってしまったが、まずは Windows の修復を試みて(DVDからインストーラは起動するし、マウスも使えるはずである)、それがダメなら、PS/2マウスを入手して、ASUS関係のドライバの入れ直しかな?(←このドライバ関係が一番怪しいと思ってる)

早く安定して自宅仕事が出来る状態にしないと・・・(^^;;

しかし、ほんま、Windows というのは面倒くさい OS だ(^^;;
Windows バックアップも、Acronis Backup のディスク単位のバックアップも失敗してしまうサーバがあった。

Acronis Backup で OS のインストールされているディスクをバックアップ対象に指定しても、「バックアップに失敗しました バックアップ対象に指定した項目が見つかりませんでした」となる。ディスクを認識しない様子。

Acronis のサポートとメールでやり取りしながら原因を調べると、「Windows が GPT パーティションのサイズを誤って認識している。具体的には、パーティション情報の『論理境界』の情報(論理ドライブのサイズ)が、物理ディスクの大きさの範囲外になっている」とのこと。

誤認識した原因は不明。
Windows インストール時に特に変わった操作はしていないし、そもそも、何らかの操作で OS に GPT パーティションのサイズを誤認させたり、あとで手動で値を変更したりは不可能。そんなことができたら大問題だ(^^;。そのため、Windows の(ドライバ等の)バグが一番怪しいと個人的には思うのだが・・・

ということで、残念ながら Windows 再インストール案件。

Windows インストーラが起動したところで(使用言語を決める画面とかで)、「Shift + F10キー」でコマンド入力画面を起動し、DiskPart ツールを使い、手動で GPT ディスクに変換してやる。

> diskpart

DISKPART> list disk

  Disk ###  Status        Size     Free     Dyn Gpt
  --------  ------------  -------  -------  --- ---
  Disk 0    Online         1862GB       0B       *

DISKPART> select disk 0

Disk 0 is now the selected disk.

DISKPART> clean

DiskPart successed in cleaning the disk.

DISKPART> convert gpt

DiskPart successfuly converted the selected disk to GPT format.

DISKPART> exit

と、ここまで手動で操作し、Windows のインストールを続ける。

これで、今度は Windows は正しく GPT パーティションの情報を認識してくれたので、Acronis Backup でのディスク単位イメージバックアップも成功するようになった。

・・・が、Windows 再インストールしか手段がないとか・・・やれやれ・・・
Windows 7 Professional SP1 で Electron の開発環境を作成する。

Mac OS X のときと一緒で、まずはもっとも重要なプログラム実行エンジンである Node.js のインストール。

Node.js のダウンロードサイトから、


最新のインストール用プログラムを落としてくる。2019/01/04 現在では、node-v10.15.0-x64.msi が安定版の最新バージョンだった。

インストール方法は書かない。MSI ファイルを実行して、あとは指示に従うだけ。某社のソフトみたいにこっそり McAfee を入れたりしようとはしないので安心しとけ(笑)
「Finish」ボタンを押して終わり。

コマンドプロンプトで、node を実行しても、

>node -v
'node' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

だったものが、ちゃんと、

>node -v
v10.15.0

このように実行される。(インストール後、)

次に、Electronのインストール。
Electron は Node.js のパッケージの一つなので、パッケージ管理コマンドでインストールを行う。

ところで、Mac OS X ではグローバルインストールを行ったのだが、それだと Electron の Update を行った時などに、動かないプロジェクトが出てくる可能性があるそうだ。
(バージョン依存の機能なんか使ってる場合だな)

というわけで、さきにプロジェクトを作って、そこにローカルインストールすることにする。このプロジェクトで使われるだけの Electron だ。

今回は個別案件管理システムを作りたいので、kobetsu という名前で作ろう。

>mkdir \Users\shinoda\electron\kobetsu

>cd \Users\shinoda\electron\kobetsu

>npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (kobetsu)
version: (1.0.0)
description: 個別案件管理
entry point: (index.js)
test command:
git repository:
keywords:
author: shinoda
license: (ISC)
About to write to C:\Users\shinoda\electron\kobetsu\package.
json:

{
  "name": "kobetsu",
  "version": "1.0.0",
  "description": "個別案件管理",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "shinoda",
  "license": "ISC"
}


Is this OK? (yes)

ちゃんと package.json が出来上がっているかな?

>ls -la
total 1
drwxr-xr-x 2 shinoda Administrators   0 Jan  4 11:16 .
drwxr-xr-x 3 shinoda Administrators   0 Jan  4 11:14 ..
-rw-r--r-- 1 shinoda Administrators 228 Jan  4 11:16 package.json

ばっちり。では、Electron のローカルインストールを行う。

>npm install --save-dev electron

> electron@4.0.0 postinstall C:\Users\shinoda\electron\kobetsu\node_modules\electron
> node install.js

Downloading tmp-11268-1-SHASUMS256.txt-4.0.0
[============================================>] 100.0% of 4.74 kB (4.74 kB/s)
npm notice created a lockfile as package-lock.json. You should commit this file.

npm WARN kobetsu@1.0.0 No repository field.

+ electron@4.0.0
added 145 packages from 127 contributors and audited 201 packages in 99.081s
found 0 vulnerabilities

以上で、インストールは終了。

Mac OS X のときと同様の index.js と index.html を作成して実行してみる。
ちなみに、ローカルインストールした Electron はプロジェクトのディレクトリの下の .\node_modules\.bin\electron に実行体は存在する。

実行時は(現在、プロジェクトのディレクトリにいるとして)、

>.\node_modules\.bin\electron .

と指定する。

20190104_electron.jpg

このように、Mac OS X 版同様に表示される。

ばっちりである。
今日は朝から自宅の Windows 7 機をお掃除。
最近起動に時間がかかるようになったので、自動起動するサービスの停止と、スタートアップに登録されているアプリケーション(実際はショートカットだけど)の削除。

メモリの使用量もちょっとは減るだろうが、そもそも俺、Google Chrome が常に30タブくらい開いてるもんで(^^;、Chrome が使ってるメモリ量だけで 16GB中の 6~7GBを占める有様(^^;
サービス止めて、何MBか使われていたメモリを解放したところで意味なし(笑)
あくまで、少しでも起動時間が早くなってくれれば。

削除(停止)したサービスとアプリは以下のとおり。一応、メモっとく。

<標準サービス>
ASRock IO Monitor Service
Capture Device Service

<拡張サービス>
Cryptographic Services
Diagnostics Tracking Service
HP CUE デバイス ディスカバリ サービス
Microsoft IME Dictionary Update
Net Driver HPZ12
Remote Access Connection Manager
Telephony
Windows Firewall

<ログインユーザスタートアップ>
Facebook Gameroom
バッファロー らくらくアップデートツール

<全ユーザスタートアップ>
Adobe Gamma
HP Digital Imaging Monitor
TotalMedia BackUp & Recorder Monitor
TotalMedia Server
Microsoft の Access で、Oracle に ODBC 接続(リンクテーブル)して表に展開。レコードの編集をしているときによく遭遇するエラー。

「バリアント型ではない変数に Null値を代入しようとしました。」

Not Null の項目に半角スペースを入れようとすると発生する。何個半角スペースを入れてもだ。
「半角スペースは Null じゃねえ!!」という正論を口にしたところで、Access なんぞをフロントエンドにしている時点で俺の負けである。

唯一の対応法を実践することになるのだが、毎回「どうすんだっけ?」と思っちゃうので、今回ばかりはここにメモしておく(笑)

つっても、色々なところで同じ質問がされているので、その URL を貼っておこうと思ったんだが、なんか、参考ページが Forbidden なエラーで見えなくなってる(^^;

なので、過去コピった内容から以下に抜粋。

    1. あらかじめクリップボードに半角スペースを1文字入れておく。(エディタに半角スペースを入力してコピーとか)
    2. 入力したいセルの左端にカーソルを持っていき、カーソルが+(白い大きな+ね)になる状態でセルをクリック。セルを選択状態にする。(入力待ち状態にしないように。やってみればわかる)
    3. Ctrl + v で貼り付け。 

これで、半角スペースが入力できる。

なんなんかね?
でも、それが Microsoft Access というものだ(笑)
昨日、岩国市内の「岩国波動エネルギー研究所」にて(わかる方だけ苦笑いしてください)Windows Server 2016 Standard のインストール作業をしていたのだが、「インストールファイルの準備中」の途中(まだ進捗率 0%のところで)、

必要なファイルをインストールできません。ファイルが破損しているか見つからない可能性があります。インストールに必要なすべてのファイルが利用可能であることを確認し、インストールを再実行してください。エラーコード: 0x80070570

なエラーが発生・・・

二、三度やり直してみたが、やはり同じエラーが出る・・・

20180813_WindowsServer2016Standard_Error.JPG
ええ?と思い「なんなんやねん、貴様は!」と新品の DELL 製サーバを叱責したのだが、アホは俺だった(^^;

そういえば、インストール先を新たに構成した RAID-1 の Virtual Disk に指定したのだが、このディスクに対して Fast Initialization を実行したままだった。
これが、さすがに容量が 2TB あるせいか、未だに実行中であった(^^;

途方に暮れている時、インストールを中断したのにピコピコ光り続ける HDD ランプと、ガガッ、ガガッっとHDD が回る音を聞いて思い出した。というか、「多分それだな」と思いつく(^^;

で、サーバを再起動し System Setup 画面に入り、Virtual Disk Management 画面で実行中の Fast Initialization オペレーションを Delete Operation してやった。
これで Windows Server のインストール無事終了。

いやあ、DELL のサーバ機。RAID-1 + Hot Spare 構成の工場出荷時構築サービスって無いのよね。だから自分でしなくちゃいけないんだけど、実際、新品ディスクでの構築なんで、Fast Initialization なんてしなくて大丈夫なのよ。

用心深い性格が災いしましたわ(笑)
お客さんところのサーバに、久しぶりに putty で ssh 接続したら、エラーが出てつながらねえ。

Disconnected: Server protocol violation: unexpected SSH2_MSG_UNIMPLEMENTED packet

って Fatal Error のメッセージが開く。

20180624_putty1.jpg

そういえばセキュリティパッチを当てるとか先方の担当者が言われてたなあ・・・そのせいかなあ・・・と思ったらそのとおりだった。

現象としては、ssh 接続するときのアルゴリズムとして一般的だった「Diffie-Hellman group exchange」を使って接続を試みるとエラーにされてしまうようである。

Putty の設定で、「接続」←「SSH」←「Kex」と選び「SSH 鍵交換のオプション」を開くと、「鍵交換アルゴリズムオプション」という欄がある。

20180624_putty2.jpg

ここで、「Diffie-Hellman group 14」という「Diffie-Hellman group exchange」よりも厳密な鍵交換アルゴリズムを選択する。

20180624_putty3.jpg

「上へ」(日本語化していなければ「Up」)ボタンを押して、「Diffie-Hellman group 14」を最優先のアルゴリズムとする。

これだけで、エラーは発生しなくなる。

このアーカイブについて

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

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

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

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


月別 アーカイブ

電気ウナギ的○○ mobile ver.

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