ホーム » 2024 » 10月

月別アーカイブ: 10月 2024

2024年10月
 12345
6789101112
13141516171819
20212223242526
2728293031  

カテゴリー

アーカイブ

ブログ統計情報

  • 100,738 アクセス


Win11 Pro 24H2 インストール

先日 Win11 21H2 への 24H2 インストールは行ったが,今回は仮想マシンとしての 24H2 の新規インストール.


iso をセットして仮想マシンを起動すると…
BdsDxe: No bootable option or device was found.
BdsDxe: Press any key to enter the Boot Manager Menu.
VirtualBox  Win11 24H2 インストールで ...


仮想マシンの設定の「システム」-「マザーボード」-「EFIを有効化」のチェックを外すと iso を読み込む.
が,「この PC では Windows 11 を実行できません」


単に「Press any key to boot from CD or DVD…」の時,キーがうまく入っていなかった


ローカルアカウントで設定するには「職場または学校用に設定する」.
職場または学校用に設定する
「サインイン オプション」を「クリック」.
サインイン オプション
「代わりにドメインに参加する」を「クリック」.
代わりにドメインに参加する
ユーザ名の入力になる.
ユーザ名の入力

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VDI の圧縮

以前 VirtualPC を使用していた頃はよくやっていたこと.
VirtualBox になってからはあまり必要なかったが,Win11 24H2 のテストで使いたくなった.


手順は VirtualPC の頃とそれほど変わらない.
1. 不要なファイルを削除.
2. SDelete.exe -z c:
3. "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd F:\VHD\Win11\Win11.vdi –compact
今回は 22H2 を 24H2 に上げた直後の VDI だったのて,50 GB 位になっていた.
確か 22H2 インストール直後は 20 GB 位.
圧縮実施後,24 GB 位になった.
VirtualBox  VDI 圧縮


VirtualBoxのWindows10を出来るだけ小さくする
VirtualBoxの仮想ドライブ(vdi)を圧縮する

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC6 プロジェクトのコードの移行

以前,VC 6 プロジェクトを移行する時の,設定などについて書いた.
VC6 から 2005 , 2008
VC6 から 2010 – 2019
VC6 から 2022
Win11 24H2  VC 6
今回は C++ コードの変更などのまとめ.


アプリケーションクラス InitInstance の次の呼出しを削除
 #ifdef _AFXDLL
  Enable3dControls();
 #else
  Enable3dControlsStatic();
 #endif


文字や文字列を _T() で括る
‘A’ –> _T(‘A’)
"abc" –> _T("abc")


_MBCS では問題ないコードが _UNICODE で,CString 変数のポインタが値として解釈されることがある.
その場合は LPCTSTR() で括れば良い.
str –> LPCTSTR(str)
C スタイルの文字列に関連する CString の操作方法
CString⇒LPTSTR変換


文字列操作関数の _UNICODE 対応と _s 対応.
_t で始まる関数に置き換え.また gcc などでも通る様に _tdefine.hxx を用意.
_MSC_VER により,_s 版と以前のものを切替える関数群を用意


int を INT_PTR などに(x64 対応).
CArray::GetSize など,MFC の色々な所で int が INT_PTR に変更された.
int size = array.GetSize() ; –> INT_PTR size = array.GetSize() ;
ダイアログベースの時も同様に.


* まだ作成途中です.


Microsoft C/C++ 2003 – 2015 の変更履歴
Visual C++ 移植およびアップグレード ガイド

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

QNAP NAS 赤ランプ

今日 PC を起動しようとして,その隣の QNAP NAS の一番上の赤いランプが点灯していることに気づいた.
https://download.qnap.com/TechnicalDocument/Storage/SMB%20NAS/ts-x53d/ts-x53d-ug-ja-jp.pdf
ステータスランプが赤く点灯しているだけで,ドライブのランプは緑の点滅.
スマートフォンの管理ツールで見ると,ディスクの空きが少なくなったことによる警告だった.
Qmanager  2024/10/25
確かに,空き容量が少なくなったメールは来ていた.
他社 NAS も同様のメール通知の設定していて警告は来るが,赤いランプが点灯するようなことはなかったと思う.
不要なファイルを整理して対応.赤になっていたランプは緑の点灯になった.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

リリース版 exe のデバッグ

先日の Win11 24H2 でうまくなかった現象を更に調べたことのメモ.
結論としては,InitInstance に確保される dlg のメンバ変数で初期化がされていないものがあったため.


最初リモートデバッグも考えたが,VC 8 では少し面倒なので VS 2005 をインストールした.
https://learn.microsoft.com/ja-jp/visualstudio/debugger/remote-debugging-cpp?view=vs-2022
インストールした VC 8 でビルドしたデバッグ情報付きのリリース exe でも不具合の現象は確認できた.
が,デバッグしようとすると欲しい情報の所でうまく表示されない部分があった.
そのため VS 2008 もインストールすることに.
VC 9 ではうまくデバッグできる様になった.


デバッガで追いかけると,ダイアログのメンバ変数が意図しない値になっていて,初期化されていないことがわかった.
修正自体は簡単だが,なぜ今まで…


初期化されていないことによりゴミ(不定値)が入ることはわかる.
その変数は ‘1’ 以外だとうまく通る様になっていて,それが 24H2 でたまたま ‘1’ に?


Initinstance で確保される dlg はスタックに確保される.
デバッグ版 exe では,0 でないバイト値などで埋められることが多いが,リリース exe では 0 または不定値となる.
0 はまだ使われていない状態で,不定値は確保前に呼び出された関数で使用する変数やリターンアドレスなど.


一度実行して,次の所で設定されるポインタを求め,それをメモリダンプのアドレスに入力.
m_pMainWnd = &dlg;
再度実行して InitInstance で止めた時のメモリの状態.
dlg メモリ状態
今回の初期化されていない変数(赤くなっている次)が,’1′ になっていることを確認できた.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Win11 24H2 インストール

Win11 24H2 に上げた環境で,あるパッケージの 2021版での不具合が発生.
最新版にすることでうまく動作する様になったようだが,原因が絞れ切れない.


そのため仮想環境の Win11 21H2 を更新することに.
最初,更新しようとしても Win11 に対応していないと弾かれた.
原因は,仮想マシンを作成したのが VirtualBox 6.1 で TPM 2.0なっていなかった
VirtualBox TPM v2.0


Insider Program に参加したりしてみたが 23H2 までしか上げられなかった.
結局 24H2 の ISO を手に入れ,仮想マシンにマウントしてインストール.


不具合の現象を再現できた.
更に調べると VC 2005 でビルドした exe がうまくない様子.同じコードを 2015 以降でビルドしたものは問題ない.
VC 2008 ,2010 ,2012 ,2013 でビルドして試すと,2005 と 2008 がうまくないことがわかった.


他に 24H2 に更新したことにより,Win10 の共有ドキュメントに接続できなくなってしまった.NAS は OK .


2024/10/26
Win10 の共有ドキュメントに接続できなくなったことへの対応は,Win10 Ent の 2021/11 の時と同じ
ゲストログオンを有効にする」必要がある
ゲストログオンを有効にする


Windows11にアップグレード後、ネットワーク上の共有フォルダにアクセスできなくなった。
Windows 11 23H2 から 24H2 に更新するべきか?
Windows11 24H2を今すぐダウンロードしてアップデートする方法


2024/11/15
ゲストログオンを有効にしない共有アクセス用のユーザを追加しての対応方法

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

MFC ダイアログに描画

MFC ダイアログ exe で GDI などでの描画を行うときは,通常「Picture Control」を使用する.
メンバ変数として CStatic を割り当てて,その変数(ウィンドウ)に対して描画する.
CWnd::GetDlgItem::GetDlgItem でも良い.


単体テスト用など,それほど重要でないプロジェクトでダイアログに直接描画したい時がある.
ZipMF.exe
リサイズ可能なダイアログの場合,Picture Control のリサイズなども意外と面倒なため


VC 2022 で,MFC の「ダイアログ ベース」として作成.
CDlgDrwDlg
ダイアログの基本クラスは「CDialog」とした.


CDlgDrwDlg::OnPaint() の else 部分を次の様に変更.

	{
	//	CDialog::OnPaint();
		{
			CPaintDC dc(this);
			CRect	rect;
			GetClientRect(&rect);
			rect.DeflateRect(10, 10);
			dc.Rectangle(rect);
		}
	}

CDlgDrwDlg::OnPaint
ダイアログの「プロパティ」-「透明化」は「True」の方が良さそう.
DlgDrw.exe
https://itl.mish.work/i_Tools/Doc/blog/vc/DlgDrw.zip

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VS 2022 の更新で「問題が…」

VS の更新があったので更新すると…
「申し訳ございません。問題が発生しました」.
VS 2022 の更新で「問題が発生しました」
どうも VC ランタイムのパッケージがインストールされなかったみたい.
VC Redist MSVC
デバッグや通常の実行も問題はなさそう.


前回とは違い「修復」で対応しようと思ったが…
VS の修復
どこまでがリセットされるかわからないので「変更」で対応.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

サムネイル表示が止まる?

以前作成したエクスプローラサムネイル表示
iShellExt  2024/10/08
前からの現象だが,不定期に表示が止まってしまうことがあった.
ほとんどが個人的に作成したシェルエクステンションの影響だが,今回は違ったように思う.
全ての explorer.exe を終了させても改善されない.


再起動すれば良いのはわかっているが,順に exe を終了させることに…
dllhost.exe を終了させると,止まっていた表示が動き出した.
ハッキリしたことがわかってないので,とりあえずメモ.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.