Win 10 IE , Edge
Win 10 の IE や Edge からの User agent を調べていて,
Edge は “Edge/12.10240” が後ろの方にあるのでこれで判断できる.
他に AppleWebKit Chrome Safari などが前にあるので,Edge と限定するためにはコードの変更(判断順の変更)が必要.
IE では “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; Trident/8.0; .NET4.0C; .NET4.0E)” となっている.
イントラネット環境で IE 11 とするには,「互換表示設定」の変更が必要.
Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko
MSDN ユーザー エージェント文字列の変更
Win 10 での デスクトップ AP の実行で,
ドロップダウン付のツールバーの表示がおかしくなる現象は,まだ残っているみたい.
ただ,以前の様に簡単には現象を再現できない.
Win 10 Pro 10240 にインストールできない
2015/09/11
IIS をアンインストールして,インストール(「Windows の機能の有効化または無効化」)してみたがダメ.
手作業で環境を作成しようとして…
オートメーションの部分が起動できない.
幾つかのいつもの設定は行ってたが,ちょっと忘れていて,
exe などを置いていたフォルダのアクセス権を正しく設定してなかった.
他に今回の固有の環境であるが,レジストリから登録情報を削除する必要もあった.
うまく動作したのは VC 8 Static MFC だったが VC 12 DLL にすると,またうまく動作しない?
VC 12 Static にしてもダメで VC 8 Static に戻したのに,今度はうまくない.
Win 10 を再起動してうまく通った.
うまく動作しなくなった後,タスクマネージャから終了できないものがありそれが影響するのか?
もう一回 VC 12 でビルドしたものにチャレンジ.
VC 12 Static MFC は通った.
VC 12 DLL MFC でも通り,結局原因は掴めず.
今回の事とは直接関係ないが,エクスプローラが何度か落ちた.
OS 自体の問題なのか,作成した シェルエクステンション の問題なのかは不明.
タスクトレイのチップが 64 …
XP 環境で,タスクトレイのチップが 64 文字で切れてしまっている.
VC8.exe は 64 で切られることはないが,VC 9 以降だとうまくない?
Win 7 環境での動作は問題ない.
まだ詳しく調べられてないが,とりあえずメモ.
2015/09/08
どうも _WIN32_WINNT によるみたい.
Win | UNICODE | MBCS | NOTIFYICONDATA | |
VC 6 | 400 | 152 | 88 | szTip[64] |
VC 7 | 501 | 936 | 488 | dwInfoFlag |
VC 8 | 502 | 936 | 488 | |
VC 9 | 600 | 956 | 508 | hBallonIcon |
VC10 | 601 | 956 | 508 | |
VC11 | 601 | 956 | 508 | |
VC12 | 601 | 956 |
Win は _WIN32_WINNT .
cbSize を NOTYFYICONDATA_V3_SIZE と指定すれば良いのか?
今回は,意図せず 64 文字で切れていたことを避けたかっただけなので,次の様に変更.
NOTIFYICONDATA nid ; ::ZeroMemory(&nid,sizeof(NOTIFYICONDATA)) ;
long maxLenTip = countof(nid.szTip)-1 ;
#if (_MSC_VER >= 1500) // VC 9 ~
if (::GetWindowsVersion() < 6) {
maxLenTip = 64-1 ;
}
#endif
if (::GetWindowsVersion() > maxLenTip) {
…
}
NotifyIcon クラスの使用
ダイアログまたは相当のクラスのヘッダに,NotifyIcon の変数を確保.
タスクトレイにアイコンを表示したい時は,NotifyIcon::Add または Mod を呼出す.
タスクトレイのアイコンを消したい時は,NotifyIcon::Del .
アニメーションの場合,NotifyIcon::StartAnimate とタイマで NotifyIcon::AnimateIcon .
アニメーションアイコンの登録は,NotifyIcon::AddIconA .登録されてない場合は,exe のアイコンと表示なしのトグル.
CAppDlg::OnInitDailog で StartAnimate ,CAppDlg::OnTimer で AnimateIcon だけで,exe アイコンが点滅する.
チップの設定は,NotifyIcon::SetTip .
最小化されたときに表示
void CXxxxDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
::FitWindow(this,&m_Image,0) ;
if (nType == SIZE_MINIMIZED) {
ShowWindow(SW_HIDE) ;
NotifyI.Mod() ;
}
}
ヘッダとソースへの MESSAGE MAP の追加
afx_msg LRESULT OnTrayCallback (WPARAM wParam,LPARAM lParam);
ON_MESSAGE (WM_TRAY_CALLBACK, OnTrayCallback)
マウスのクリックによる動作
LRESULT CXxxxDlg::OnTrayCallback (WPARAM wParam,LPARAM lParam)
{
UINT uID = (UINT)wParam;
UINT uMouseMsg = (UINT)lParam;
if (uMouseMsg == WM_LBUTTONDOWN) {
AfxGetMainWnd()->ShowWindow(SW_SHOW) ;
AfxGetMainWnd()->ShowWindow(SW_SHOWNORMAL) ;
}
if (uMouseMsg == WM_RBUTTONUP) {
CPoint curPos ; ::GetCursorPos(&curPos) ;
PopupMenu (NULL,IDR_POP_MENU,curPos,ID_XXXX) ;
}
return 0 ;
}
WM_TRAY_CALLBACK は,NotifyI.hxx に定義済.
2015/09/03
メニュー表示後,デスクトップなどのクリックでメニューが消えなかったので検索すると,
SetForegroundWindow を呼べば良いとのこと.
if (uMouseMsg == WM_RBUTTONUP) {
CPoint curPos ; ::GetCursorPos(&curPos) ;
SetForegroundWindow() ;
PopupMenu (NULL,IDR_POP_MENU,curPos,ID_XXXX) ;
}
3MF
メモリのオーバーフロー
次の様なコードで,実行時にエラー.
i_DIB DIB_FlipVertical (const i_DIB& dib_)
{
i_DIB dib = dib_ ;
if (dib_.GetWidth () == 0) { return dib ; }
if (dib_.GetHeight() == 0) { return dib ; }
u_32* bits = (u_32*)dib.GetP_Bits() ;
for ( int y=0 ; y<dib.GetHeight()/2 ; y++) {
for (int x=0 ; x<dib.GetWidth() ; x++) {
u_32 sPos = x+dib.GetWidth()*( y) ;
u_32 dPos = x+dib.GetWidth()*(dib.GetHeight()- y) ;
u_32 tmp = *(bits+(dPos)) ;
*(bits+(dPos)) = *(bits+(sPos)) ;
*(bits+(sPos)) = tmp ;
}
}
return dib ;
}
原因は最初の dPos が画像の範囲を超えていること.これはすぐにわかったが,
デバッガで追いかけてもこのループは何もなかったかの様に通り,この関数を抜ける時にエラーとなる.
たまたまと言うこともあると思うが,MFC の配列を使用していればアクセスした段階で ASSERT されるのでは?
i_dib_f.hxx
AMF texture
AMF を調べていて,テクスチャ部分の変換テスト.
次の様なコードで,それぞれの色の成分の画像が出来ることを確認.
inline AMF_Texture AMF_texture_To (const Xml_E& tex_e)
{
AMF_Texture tex ;
if (tex_e.GetName() != AMF_texture) { return tex ; }
tex.ID = tex_e.GetAttribute(AMF_id) ;
tex.Width = ::ttou4 ( tex_e.GetAttribute(AMF_width)) ;
tex.Height = ::ttou4 ( tex_e.GetAttribute(AMF_height)) ;
tex.Texture = ::base64_decode(::To_v_char(tex_e.GetText())) ;
{
i_DIB dib ;
dib.Create(tex.Width,tex.Height) ;
for ( long y=0 ; y<dib.GetHeight() ; y++) {
for (long x=0 ; x<dib.GetWidth () ; x++) {
u_32 pc = *(dib.GetP_Pixel(x,y)) ;
u_32 argb = pc ;
if (unsigned(x+y*dib.GetWidth()) < tex.Texture.size()) {
u__8 c = tex.Texture[x+y*dib.GetWidth()] ;
argb = 0xff000000 + (c<<16) + (c<<8) + (c) ;
}
u_32* bits = (u_32*)dib.GetP_Bits() ;
*(bits+(x+y*dib.GetWidth())) = argb ;
}
}
tstring dibName ;
{
// …
dibName = outPath + _T("\\") + tex.ID + _T("_") + ::To_tstring(Count) + _T(".dib") ;
}
::HBITMAP_To(::ToHBITMAP(dib),dibName.c_str()) ;
}
return tex ;
}
1.5 M 位の bmp をテクスチャとして求め,それを数100個?生成していて,メモリ不足.
原因はすぐわかったが,この上のコードでもある様に ToHBITMAP() で求めた HBITMAP を DeleteObject してない.
次の様にする必要がある.
HBITMAP hBMP = ::ToHBITMAP(dib) ;
::HBITMAP_To(hBMP,dibName.c_str()) ;
::DeleteObject(hBMP) ;
幸いこの関係のコードを書いたのが今年になってからだったので,利用している部分は限定的.
検索をかけて変更が必要な所は 10 箇所程度?
多くは,デバッグ版でのみ実行されるコード.
AMF_Texture のデータメンバを protected に.
v_char AMF_Texture::GetTexture() を用意して,それを利用する様に変更すると,デバッグ版で遅い.
ここでの対応はすぐわかったが,この類のコードが相当ありそう.
参照の関係の理解が不十分なので,もう少し調べる必要あり.
error LNK2005 LNK2001
プロジェクト生成時に「MFC を使用しない」としたコンソール AP で Afx.h をインクルードした場合
リンク中…
nafxcwd.lib(afxmem.obj) : error LNK2005: “void * __cdecl operator new(unsigned int)” (??2@YAPAXI@Z) はすでに LIBCD.lib(new.obj) で定義されています
nafxcwd.lib(afxmem.obj) : error LNK2005: “void __cdecl operator delete(void *)” (??3@YAXPAX@Z) はすでに LIBCD.lib(dbgdel.obj) で定義されています
や
nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル “__endthreadex” は未解決です
nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル “__beginthreadex” は未解決です
プロジェクトの設定で「共有 DLL で MFC を使う」などに変更.
VC 10 でビルドした exe を XP で…
以前から VC10 以降でビルドした exe が Win XP 環境で起動できてなかった(ビルド環境の Win 7 では OK).
—————————
M—.exe – エントリ ポイントが見つかりません
—————————
プロシージャ エントリ ポイント K32GetProcessMemoryInfo がダイナミック リンク ライブラリ KERNEL32.dll から見つかりませんでした。
—————————
OK
—————————
日本語化された GetProcessMemoryInfo には書かれてないが,
こちら (GetProcessMemoryInfo function) には,Win 7 以降変わっているような記述がある.
対応としては App.h(アプリケーションクラスのヘッダファイル)に以下を追加した.
#ifndef PSAPI_VERSION
#define PSAPI_VERSION 1
#pragma comment (lib, “PSAPI.Lib”)
#else
#pragma message (“defined PSAPI_VERSION *************”)
#endif
MR03LN その後
2015/05/30 「AtermMR03LN 1B クレードルセット」と「ドコモminiUIMカードDN05m」が届く.
2015/06/01
暫く外出の予定がないので,SIM なしでどの様な使い方ができるかを試してみた.
クレードルがあるのでブリッジモードで運用しようと思ったが,ルータにLANの空きポートがない.
MR03LN の動作モード
そのため,一先ずレピータとしての運用となっている.
設定は,公衆無線LANの設定の「手動設定」でアクセスポイントを登録.
理由は,私が平日一番長く居る部屋で 107SH のWi-Fi が不安定なため.
以前レピータを購入して使用してみたが,効果が低かった.
2015/06/02
107SH 自体がそれなりなので,何とも言えない部分もあるが…
MR03LN との接続で,Wi-Fi ではそれ程問題なく動作していると思う.
Bluetoothでの接続がよくわからない.
107SH の Wi-Fi 機能を OFF にすれば安定してつながっているが,ON にすると Bluetooth の接続が解除される.
どこの問題かは不明.単なる仕様?
iPod touch では Bluetooth もそれなりに動作しているように感じる.
2015/06/03
昨日,ルータに有線LANで接続して,ブリッジモードで接続してみたが…
どこか設定が悪いのか,あまり使い勝手が良くない?
それとも,ルータの設定を変更すると,暫くの間安定しない?
SIM を挿してLTEなどでの動作を確認.
「LTE/3G」と「公衆無線LAN」を切替えた時に,暫く Wi-Fi 接続の107SH の動作が安定しない気がする.
MR03LN も,どういうタイミングかわからないが勝手に切り替わってしまう時がある様に感じる.
充電中などの時,MR03LN のディスプレイの表示時間をもっと長くできたら良いのに.
2015/06/14
スイッチングハブ EHC-G05PA-W-K を購入.
ブリッジモードで接続してみたが,やはりイマイチ.
使い方(設定)が悪いのかわからないが,私の環境でのうまい使い方が見いだせない.
やはり,レピータとしての運用が合ってそう.
ファイル数
あるフォルダに,ユーザが作成した 3D データを,自動でファイル名を振って保存する様にしている.
但しファイル名の一部はユーザ指定.
ロジック上は,36^4 で 1,679,616 管理できるはず.
これがいっぱいになったと言われて…
通常の運用であれば,1 日に 100 個はかなりきつい.
それでも 16,000 日かかる.
そんなことがあり,ファイル名の空きを検出するツールを作成中.
かなり前の事だが,iRMX の FD のフォーマット?で,指定しないと 200 個位がデフォルトだったと記憶している.
NTFS ではその様なことはないと思ってたが,はっきりした情報があったのでメモ.
TechNet – ファイル システム
BIGLOBE 申込み
本当は,申し込み手続きの確認が目的で 996-962 に電話したのに…
MR03LN のセットの場合,在庫が残り僅かと言われて…
申し込んだのは,エントリープラン + モバイルルータ Aterm MR03LN クレードルセット .
「SMSオプション対応SIMカード」は,私にはあまり必要なさそうだったので付けなかった.
1,835 + 税 とのこと.他に,申し込み手数料.
電話で確認したかったのは次の様な事.
格安 SIM の申し込み手続きの多くが,Web 申込みでクレジットカードが要求される.
本当は「口座振替」が良かったのだが,ルータとのセットの場合は不可とのこと.
今日の電話で申し込みとなったので,後日手続きの書類が届き,記入して返送すれば SIM カードなどが届くらしい.
気が向いたらその時またレポートします.
MR03LN のセットが僅かと言われたことで電話の後ちょっと検索してみた.
どうも後継の MR04LN と言うのが近いうちに出るみたいな情報が見つかる.
今手に入る情報の範囲で,私の使用目的では 03 も 04 も大差はなさそう.
2015/05/20
これを機に通信費を見直し.
PXI02141 は解約.
alles.or.jp も解約と思って調べてたら,メールアドレスのみを残す方法があるみたい.
あまり詳しく書かれてなかったので,電話したら,変更のための書類を送ってもらえるとのこと.
2 ~ 3 ヶ月前に見た時は,この様な情報はなかったと思う.
そのため幾つかの登録アドレスを徐々に別のものに変更していたのに…
2015/05/22
今日 BIGLOBE の LTE・3G データ SIM の所を見ると,モバイルルータとセットになった申し込みがなくなっている.
昨日 BIGLOBE から,会員証や「支払方法登録申込書」などが届いた.
クリップボードに…
オフスクリーンにレンダリングしたものをクリップボードにコピーしていて,
5000x5000x4 バイトの CF_BITMAP がうまく動作しない.
原因は Office クリップボードの制限みたいで 8 M まで.
Office クリップボードにアイテムを追加できない場合の確認事項
無効にして対応.
よくわからないが,以下の様にした.
CF_METAFILEPICT StretchDIBits
CF_BITMAP AlphaBlend
AlphaBlend function (Windows) – TechNet – Microsoft に,
An error occurs (…) if the source device context identifies an enhanced metafile device context.
コピー画像は,
いろいろやっていて,一度 EMF に吐いて
::GetEnhMetaFile(…) で返される HENHMETAFILE を CF_ENHMETAFILE で意図した動作となった.
{
CString tmpPath = ::GetTempPath() ;
tmpPath = CString(::Path_AddLastSP(tmpPath).c_str()) + _T(“Debug.tmp”) ;
tmpPath = CString(::Path_AddLastSP(tmpPath).c_str()) + ::GetFileTitle(::GetModuleFileName()) ;
CString nowStr = CTime::GetCurrentTime().Format(_T(“%d%H%M%S”)) ;
CString tmpName = CString(::Path_AddLastSP(tmpPath).c_str()) + nowStr + _T(“.emf”) ;
::CreateFolder(tmpPath) ;
::ToEMF(dib,tmpName) ;
HENHMETAFILE hMetaFile = ::GetEnhMetaFile(tmpName) ;
return hMetaFile ;
}
…
::SetClipboardData(CF_ENHMETAFILE, hGMemEnhM) ;
i_DIB_x.hxx
i_DIB_Fn.hxx
i_dib.hxx
今度はメモリメタファイル(第 2 引数を NULL)にして,
{
CMetaFileDC mf_DC ;
BOOL ret = mf_DC.CreateEnhanced(NULL,NULL,NULL,NULL) ;
::AlphaBlend (mf_DC.GetSafeHdc(),dRect,dib) ;
HENHMETAFILE hEnhMetaF = mf_DC.CloseEnhanced() ;
return hEnhMetaF ;
}
CreateEnhanced の幾つかの引数が NULL は知らなかった.
CreateEnhMetaFile
Programming Windows 5 18.2.2
Programming Windows 5
XP 環境のクリップブックや,Word 2003 などでの CF_METAFILEPICT がうまくない.
{
CMetaFileDC mf_DC ;
BOOL ret = mf_DC.Create() ;
::StretchDIBits (mf_DC.GetSafeHdc(),dRect,dib) ;
HMETAFILE hMetaFile = mf_DC.Close() ;
hGMemMeta = ::GlobalAlloc( GHND, (DWORD) sizeof(METAFILEPICT)) ;
{
LPMETAFILEPICT lpMFP = (LPMETAFILEPICT)GlobalLock(hGMemMeta) ;
lpMFP->mm = MM_TEXT ;
lpMFP->xExt = dRect.right ;
lpMFP->yExt = dRect.bottom ;
lpMFP->hMF = hMetaFile ;
}
::GlobalUnlock(hGMemMeta) ;
return hGMemMeta ;
}
StretchDIBits とした.
Win 10 TP 10061
Build 10061 に更新.
VirtualBox だからなのかわからないが,OpenGL を利用している exe で真っ黒になってしまう.
Vista になった時,一部の環境やオフスクリーンの場合に同様の現象だったと記憶している.
DescribePixelFormat , SetPixelFormat 辺り?
Build 9926 では問題なかったと思う(9879 では問題ない).
exe によっては起動しなかったり,アプリケーションエラーになる.
他に,どこかの設定かわからないが,エクスプローラから AP にドキュメントのドロップが出来ない?
2015/06/03
Build 10130 で,OpenGL での描画が真っ黒になる動作は解消されている.
vsdrfCOM でエラー
VS 2005 のセットアッププロジェクトで,exe の「Register」を「vsdrfCOM」としてビルドすると,
—————————
AsTM0317.exe – アプリケーション エラー
—————————
“0x5cac9a9c” の命令が “0x0000005c” のメモリを参照しました。メモリが “read” になることはできませんでした。
プログラムを終了するには [OK] をクリックしてください
—————————
OK
—————————
—— ビルド開始: プロジェクト: TestSet3, 構成: Debug ——
ファイル ‘C:\…\TestSet3\TestSet3\Debug\TestSet3.msi’ をビルドしています…
警告: ‘AsTM0317.exe’ というファイルのレジストリ情報を作成できません。
警告: Windows インストーラは、どの選択された必須コンポーネントにも含まれていません。
ファイル ‘AsTM0317.exe’ をパッケージしています…
ファイル ‘AsImgCnv.exe’ をパッケージしています…
========== ビルド: 1 正常終了または最新の状態、0 失敗、0 スキップ ==========
AsImgCnv.exe の方はエラーの表示はない.
VS 2002 や 2008 では,OK.
また,vsdrfCOMSelfReg の場合も OK.
2015/03/20
vsdrfCOMSelfReg とした場合,そのままではインストール時にダイアログから表示されていた.
/RegServer , /UnRegServer が指定された場合,ダイアログを表示しない様に対応.
BOOL isReg = FALSE ;
{
if (::FindNoCase(m_lpCmdLine,_T( “/REGSERVER”)) >= 0) { isReg = TRUE ; }
else if (::FindNoCase(m_lpCmdLine,_T( “-REGSERVER”)) >= 0) { isReg = TRUE ; }
else if (::FindNoCase(m_lpCmdLine,_T(“/UNREGSERVER”)) >= 0) { isReg = TRUE ; }
else if (::FindNoCase(m_lpCmdLine,_T(“-UNREGSERVER”)) >= 0) { isReg = TRUE ; }
}
if (!isReg) {
CAsImgCnvDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK) {
}
else if (nResponse == IDCANCEL) {
}
}
IIS での ActiveX.exe
次の様なコードで,環境により?サーバの exe が終了されないことがある.
dim oHV
set oHV = Server.CreateObject(“AsHVXxx.Application”)
Response.Write “AsHV….App ” & oHV.GetVersion & “<br>” & vbCrLf
set oHV = Nothing
AsHVxx.exe ~.Application のみ
Win XP , 7 とも正しく終了する.
PAtoXx.exe
Win XP 環境で,デバッグ版 exe は OK .
Win 7 では正しく終了している.
2015/02/19
PAtoXx.exe の OnInitDialog で,環境設定用のダイアログが表示されて止まってしまっていた.
で,単純にメッセージボックスなどを表示しているならばすぐわかったはずだが,…
普通の exe としての起動の場合は,ダイアログは表示されない.
ASP のオートメーションとして起動された場合は,見えないがダイアログが表示されて止まっている.
ダイアログが表示される条件は,設定値が正しいフォルダをさしていない場合.
c:\ProgramData\… の様にローカルをさしている場合は,どちらの起動でもダイアログが表示されないで処理を継続.
\\T54W7U64\Documents\… の場合,当然であるが単純起動の exe では OK でダイアログは表示されない.
これが ASP から起動されると _taccess で正しく判断できず,ダイアログが表示されて止まっている.
CFile::GetStatus でもうまく判断できない?
2015/02/24
MFC クラスウィザードからの「クラスの新規作成」で 「CCmdTarget」 「タイプ ID で作成」したものも終了されない?
利用している所は次の様な感じ.
set oM_P_ = Server.CreateObject(“AsXxxxX.Path”)
デフォルトで作成されている ~.Application を利用することで終了できる.
set oM_S_ = Server.CreateObject(“AsXxxxx.Application”)
この動作は,vbs でも同様に確認できる.
2015/03/05
AsXxxS.exe を修正していて Win 7 環境で,
Server オブジェクト エラー ‘ASP 0177 : 80080005’
Server.CreateObject に失敗しました
/Test/Test_3rd/D_Path_1.asp, 行 7
80080005
XP 環境では OK .
設定関連の漏れがあると思うが,それまで通っていたのでコードを変更.
以下が新しく追加した部分
{
#if defined _UNICODE
folder = ::FolderAddLastSP(folder) + _T(“WC”) ;
#elif defined _MBCS
folder = ::FolderAddLastSP(folder) + _T(“MB”) ;
#endif
// ::CreateFolder(folder) ;
if (::FolderIsNothing(folder)) {
if (::CreateDirectory(folder,NULL)) { folder = folder+_T(“\\”) ; }
}
}
最初 CreateFolder としていた所を,CreateDirectory に変更することで対応.
この関数は,デバッグ情報をファイルに出力しているが,Win 7 環境ではファイルが生成されてない.
%Temp% (c:\Windows\Temp) 以下に AsImgCnv….\EMF などのフォルダを作成して,生成した emf を保持している.
綺麗な状態に戻そうとして,EMF フォルダを削除して実行すると,
エラー ‘80010105’
/Test/Test_2nd/CallAS/E/SelectPage.asp, 行 148
AsImgConv… フォルダのアクセス権を変更してしまった事が原因か?
どの様に設定すべきかわからず,AsImgCnv… フォルダをエクスプローラで削除して対応.
もう一回,うまく行っている状態で EMF フォルダを削除.
どうも設定ではなくコードが悪いみたいで,影響していそうな所を見てみると,
CacheFile::GetFolder で ::CreateFolder を呼んでいる.
::CreateFolder を MFC を使用していない ::Folder_Create に置換えてみた.
停止(’ASP 0177 : 80080005’)することはなくなったが,まだ何かありそう.
EMF のフォルダが生成されない.
2015/03/10
結局,%Temp% は利用しない様に変更した.
どういう条件かわからないが,c:\Windows\Temp\DbgDump\ にはデバッグ情報が正しく出力されてなかった.
(Win XP では意図した動作だったと思う)
2015/03/30
%Temp% でなく Public\Documents\ 以下にしたが,それだけでは完全ではなさそう.
アクセス権の関係と思うが,パブリックフォルダの共有設定が必要?