ラベル 問題解決案 の投稿を表示しています。 すべての投稿を表示
ラベル 問題解決案 の投稿を表示しています。 すべての投稿を表示

2014年4月2日水曜日

ClickOnce アプリのデバッグと、セキュリティの警告

「現在のプロジェクト設定は、プロジェクトが特定のセキュリティのアクセス許可でデバッグされることを指定しています。このモードでは、コマンドライン引数は実行可能ファイルに渡されません。デバッグを続行しますか?」


ーーー

コマンドライン引数を確かめますと、確かに指定しています。


ーーー

解決するには、XXX.csproj.userファイル中、

<EnableSecurityDebugging>false</EnableSecurityDebugging>

こちらをfalseに設定します。

ーーー

「特定のセキュリティのアクセス許可」とやらは提供されなくなりますが、そういう複雑なプロジェクトを組んでいらっしゃる方は、普通、入口を切り分けると思いますので。。。

            if (ApplicationDeployment.IsNetworkDeployed) {
// ClickOnce 起動時は、こちら
// 追加の処理…
}
else {
// それ以外 (exe ファイルの直接起動時、デバッグ時など)
// 追加の処理…
}

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
return;

ーーー

画面の設定手順としましては:

プロジェクトのプロパティ
→「セキュリティ」タブ
→「詳細設定」ボタン
→「このアプリケーションを選択されたアクセス許可のセットでデバッグする」 チェックを外す。

ーーー

ただし、アセンブリ参照の内容によってはこの画面まで至ることができません。その場合、ファイルの直接編集が有効です。

2013年7月18日木曜日

VNCで漢字キーが使える環境

次の環境では、[Show Connection Options...]→[Japanese keyboard]をオンにすれば、直後から、漢字キーの押下で、VNC先のMSIMEが反応しました。

UltraVNC X64 Viewer 1.0.9.6.2 → VNC サーバーフリーエディション 4.1.2k4
UltraVNC X64 Viewer 1.0.9.6.2 → UltraVNC 1.1.9.1


---

こちらの環境では、[Show Connection Options...]→[Japanese keyboard]をオンにした後、[Alt]+[漢字キー]の組み合わせで反応するようです。

UltraVNC X64 Viewer 1.0.9.6.2 → Ultr@VNC Win32 Server SC 20.3

2013年7月17日水曜日

PostgreSQL8.2サービスは起動して停止しました。…

現象:
「ローカルコンピューター上のPostgreSQL Database Server 8.2サービスは起動して停止しました。サービスの中には、ほかのサービスやプログラムで使用されていない場合は自動的に停止するものがあります。」

Try "postgres --help" for more information.



――――――――――
修正案 (1) "C:\Program" ファイルを削除

ある日突然、PostgreSQL 8.2 が起動しなくなったのであれば疑わしいです…

なにかの拍子で Program というファイルが C:\ に作成される事案があるようです。
このファイルがあると PostgreSQL 8.2 が起動直後に終了する、という問題がありました。

このファイルを削除すると、サービスが起動できるようになりました。

――――――――――
修正案 (2) pg_hba.conf で IPv6 の localhost を許可

セットアップ直後から pgsql-8.2 サービスが起動しないのであれば、疑わしいです。

localhost が IPv6 の localhost → ::1 として解決されてしまい、 接続拒否になっている可能性です。

pg_hba.conf にて、::1/128 を許可しましょう。

---
# IPv6 local connections:
host all all ::1/128 md5
---

――――――――――
修正案 (3) -w オプションを削除

-wを消すとうまくいく事例が有るようです。

レジストリエディタを起動。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\pgsql-8.2

ImagePathについて、

"C:\Program Files (x86)\PostgreSQL\8.2\bin\pg_ctl.exe" runservice -w -N "pgsql-8.2" -D "C:\Program Files (x86)\PostgreSQL\8.2\data\"

から

"C:\Program Files (x86)\PostgreSQL\8.2\bin\pg_ctl.exe" runservice -N "pgsql-8.2" -D "C:\Program Files (x86)\PostgreSQL\8.2\data\"

2013年6月17日月曜日

IIS6以上CGIでのstderr落ち問題

502 - Web サーバーがゲートウェイまたはプロキシ サーバーとして動作しているときに、無効な応答を受信しました。

検索中のページに問題があるため、ページを表示できません。Web サーバーがゲートウェイまたはプロキシ サーバーとして動作し、上位のコンテンツ サーバーと通信しているときに、コンテンツ サーバーから無効な応答を受信しました。


(2016/8/2 追記) ISAPI 拡張では stdout/stderr を使いませんので、存在しません。GetStdHandle を呼び出しても恐らく NULL が返ってくるだろうので、NULL アクセスで Access Violation になり、エラー落ちするのだと考えられます。
What is an ISAPI Extension? に記述のある EXTENSION_CONTROL_BLOCKReadClient WriteClient を代わりに呼び出すだけです。

さて、エラーは次の条件下で発生するようです:
  • IIS6以上を使っている。
  • phpやperlなどを使っている。CGI/ISAPIに関係なく。
  • stderrに何かを出力する。 

可能性の高い例として、外部プログラムがstderrに出力する場合が挙げられます。

対策例:

exec("pdftk.exe 2>&1", $output, $retval);

コマンドの末尾に"2>&1"をくっ付けて、stderrからstdoutにリダイレクションするか、
"2>NUL"で、Nullデバイスに捨てるのが手っ取り早い対策です。。。

参考:

PHP StdErr after Exec()
http://stackoverflow.com/questions/2320608/php-stderr-after-exec

php5でのexecとstderr
http://dd-kaihatsu-room.blogspot.jp/2013/03/php5execstderr.html

2013年4月5日金曜日

ATL/MFC トレースツール…動作を停止しました


「ATL Trace Toolは動作を停止しました。」
「問題の解決策をオンラインで確認できます。」

MSDNのATLサンプルにソースコードが含まれるので、デバッグしました。

  kernel32.dll!_InterlockedIncrement@4()  + 0x9 バイト 
> AtlTraceTool8.exe!CAtlTraceSettings::TryAddRef()  行 92 + 0xd バイト C++
  AtlTraceTool8.exe!CAtlAllocator::TakeSnapshot()  行 450 + 0xe バイト C++
  AtlTraceTool8.exe!AtlTraceSnapshotProcess(unsigned long dwProcess=4164784)  行 462 C++
  AtlTraceTool8.exe!CTraceToolDlg::PopulateTree()  行 294 C++
  AtlTraceTool8.exe!CTraceToolDlg::OnInitDialog()  行 193 C++

どうやら相性問題のようです。

タスクマネージャーで、hkcmd.exeigfxpers.exeを強制終了すれば立ち上がるようになりました。

2013年4月4日木曜日

mailtoでは、UTF-8か、SJISか

クリックしてみてください: メール送信 (SJIS) メール送信 (UTF-8)

本ページはUTF-8エンコードです。

Internet Explorer 10 (Windows 7)で、
  • Windows Live メール Version 2011、SJIS→正常、UTF-8→化ける
  • Mozilla Thunderbird 17.0.4、SJIS→化ける、UTF-8→正常
Google Chrome 26 (Windows 7)で、
  • Windows Live メール Version 2011、SJIS→正常、UTF-8→化ける
  • Mozilla Thunderbird 17.0.4、SJIS→化ける、UTF-8→正常
Firefox 17.0 (Windows 7)で、
  • Windows Live メール Version 2011、SJIS→無反応、UTF-8→正常
  • Mozilla Thunderbird 17.0.4、SJIS→無反応、UTF-8→正常
Safari 5.1.7 (Windows 7)で、
  • Windows Live メール Version 2011、SJIS→正常、UTF-8→化ける
  • Mozilla Thunderbird 17.0.4、SJIS→文字化け、UTF-8→正常
Internet Explorer 8 (Windows XP)で、
  • Outlook Express 6、SJIS→正常、UTF-8→文字化け
所見:
  • 日本語版のWindows環境では、SJISが無難の様です。
  • Thunderbirdについては、UTF-8が良い様です。しかしThunderbirdを使っているかどうかを知るのは難しい。別リンクを作る等の工夫が要りそうです。
  • Firefoxについては、UTF-8が良い様です。
  • iPadFirefox 15.0.1&Safari 4.0.2(Mac OS X 10.5)では、UTF-8が良い様です。

2013年3月18日月曜日

php5でのexecとstderr

stderrをstdoutにリダイレクトする事で、stderrが用意されないIIS6で落ちるのを防ぐことができます。

exec("pdftk.exe 2>&1", $output, $retval);

問題点:stderrとstdoutの区別が付かなくなってしまいます。エラー表示(stderr)なのか、情報(stdout)なのか。
 
proc_openを使うと、個別に対応可能ですが、手間です。
 
成功・失敗だけを見たいのであれば、$retvalを見れば十分な場合も多いです。
 
良識的なコマンドラインツールは、次のような$retvalを返すように考えられ作られています。
0 = 成功
0 以外 = 失敗 (正だけではなく、負の場合も有るので注意が必要。アクセス違反を意味する 0xC0000005 つまり -1073741819 等。)
 
そういう場合ではstderrをstdoutに結合する方法も有効と思います。

2013年3月15日金曜日

Softbank 103P アドレス帳(VCF)の一括書き出し・取り込み手順

本体→microSD
  • ツール
  • SDバックアップ
  • データ参照
  • 1 電話帳
  • [メニュー]
  • 5 microSDへコピー
  • 暗証番号入力
  • 全件microSDへコピーしますか? YES

microSD、保存先と思われるファイルパス
D:\PRIVATE\MYFOLDER\Utility\Contacts\Contacts.BCK\XXXXXX00.VCF

出力例:
BEGIN:VCARD
VERSION:2.1
N;CHARSET=SHIFT_JIS:枚岡合金工具;株式会社;;;
SOUND;X-IRMC-N;CHARSET=SHIFT_JIS:ヒラオカゴウキンコウグ;カブシキガイシャ;;;
TEL;CELL:0667582001
EMAIL;WORK:info@sg-loy.co.jp
ADR;CHARSET=SHIFT_JIS;ENCODING=QUOTED-PRINTABLE;WORK:;;2-7-22;=91=E5=8D=E3=
=8Es=90=B6=96=EC=8B=E6=92F=92=86;=91=E5=8D=E3=95{;544-0013;=93=FA=96{
NOTE;CHARSET=SHIFT_JIS;ENCODING=QUOTED-PRINTABLE:=83=81=83=82
X-NO:10
X-CLASS:PUBLIC
END:VCARD

microSD→本体
  • ツール
  • SDバックアップ
  • データ参照
  • 電話帳
  • ファイル選択。例:XXXXXX00
  • [メニュー]
  • 4 全件本体へ上書きコピー
  • 端末暗証番号入力
  • 全件本体へコピーしますか? YES
  • 本体の登録内容が削除されます よろしいですか? YES

2013年2月27日水曜日

AutoIncrementStepを先に…

諸事情により、手でDataSetをコーディングしているのですが…、
 dtJ.Columns["受注MT"].AutoIncrement = true;
 dtJ.Columns["受注MT"].AutoIncrementStep = -1;
 dtJ.Columns["受注MT"].AutoIncrementSeed = -1;
どうも AutoIncrementStep と AutoIncrementSeed には入れる順序が有るようです。

AutoIncrementSeed を先にしますと、受注MTが16の時、新しい行には15が割り当たりました。これはマズい。

AutoIncrementStep を先にしますと、受注MTが-1になります。

2013年2月8日金曜日

StrCmpLogicalW的な、数字順の並び替え(C#)

個人的には、Regex.ReplacePadLeft(19, '0')で良いと思うのです…

        class Strn_comparer : IComparer {
            #region IComparer メンバ

            public int Compare(string x, string y) {
                int t = Norm(x).CompareTo(Norm(y));
                if (t != 0) return t;
                return x.CompareTo(y);
            }

            static string Norm(string x) {
                return Regex.Replace(x, "\\d+", Pad);
            }

            static string Pad(Match M) {
                return M.Value.PadLeft(19, '0');
            }

            #endregion
        }

C-1 → C-0000000000000000001
C-11 → C-0000000000000000011
C-2 → C-0000000000000000002

これで単純な文字列比較ができるようになります。

しかし、文字列が長くなり、メモリも消費しまくりなきらいは有ります。

いかがなものでしょうか。

2012年12月21日金曜日

タスク イメージ破損、特定用ソフトのご紹介

「タスク イメージは破損しているか、または変更されています
 (HRESULTからの例外:0x80041321) 」
 

破損タスクを探すソフトを開発致しました。

FindBrokenTasks
http://code.google.com/p/kumpro/downloads/list?can=2&q=FindBrokenTasks

Subversionのレポジトリにて、ソースコードも提供しています:
https://kumpro.googlecode.com/svn/trunk/FindBrokenTasks

セットアップを完了し、起動します。問題有りの場合は次のような画面に:


「例外情報」 開発者視点のエラーメッセージを表示致します。
「デスクトップへ複製する」 問題のタスクファイルをデスクトップへ複製します。
「デスクトップへ移動する」 問題のタスクファイルをデスクトップへ移動します。

問題なしの場合は、次のようになります。

2012年8月30日木曜日

Malformed permissions property: 'langid' 対策

(臨時修正版:https://drive.google.com/open?id=1C6mmykeZD4LCpTzvEp272PDgOwrE_c0B

Windows 8又はWindows Server 2012に、PostgreSQL 8.2 の導入を試みると、失敗するようです。

次の様なエラーメッセージが表示されます。

Malformed permissions property: 'langid'

原因を特定致しました。

未初期化の変数に対する読み取りアクセスが原因のようです。(これは、PostgreSQL側に問題が有ります。Windows側の問題では有りません。)

修正ファイル編:

mstファイル置き場へのリンクを設置致します。使用方法につきましては、各人にて調査され、対処してください。自己責任でお願いいたします:
https://sites.google.com/site/kaihatsublog/pginstca

分析編:

次にコードを示します。(pgFoundary/pginstaller/pginst/ca/pginstca.cファイル中、RunInitdbから抜粋しています)

 serverdir = strchr(langid,';');
 if (!datadir)
 {
  SendErrorMessage(hInstall,L"Malformed permissions property: 'langid'.");
  return ERROR_INSTALL_FAILURE;
 }

serverdirに書き込んでいるのに、datadirを読み取っています。

Windows 8以前では、未使用のスタックが汚れていた(?)ため、発現しなかったようですが、
Windows 8以遠では、未使用のスタックを0で掃除する(?)ようになったため、発現するようです。

この問題は8.2以降で修正されていますが、8.2系列には補修が適用されていないようです。

Orca及びOllyDbg v2.01 (beta 2)の力を借り、解析しました所、次の様になっています。


そこでパッチを当てました。pginstca 3758 EC F0

Stirlingでパッチを適用し、Orcaで書き戻した所、セットアップが成功するようになりました。

2012年7月12日木曜日

WinDbgで、エラー報告データを解析2(.NETfx 2.0向け)

前回の続編です。

今回は、スタックトレースを見ながら要因を追跡していきます。

WinDbgを起動します。

[File]→[Open Crash Dump...]

次の場所を開く(Windows Server 2003):
%USERPROFILE%\Local Settings\Application Data\PCHealth\ErrorRep\QSignoff

8C80969E.cab等、cabを開きます。

~~~

打ち込みます(.NET Framework 2.0対応のため)

.load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll

結果:
0:002> .load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll

------------------------------------------------------------ 
sos.dll needs a full memory dump for complete functionality. 
You can create one with .dump /ma <filename>
------------------------------------------------------------ 

~~~

打ち込みます。発出された例外を表示。

!pe

結果:
0:002> !pe
Exception object: 09fb423c
Exception type: System.IO.IOException
Message: 指定されたネットワーク名は利用できません。
InnerException: <none>
StackTrace (generated):

SP       IP       Function
00A4FB64 799D0B09 mscorlib_ni!System.IO.__Error.WinIOError(Int32, System.String)+0x75c9f9
00A4FBC0 79A0CE90 mscorlib_ni!System.IO.FileStream.WriteCore(Byte[], Int32, Int32)+0x7221a0
00A4FBE0 792EACD2 mscorlib_ni!System.IO.FileStream.FlushWrite(Boolean)+0x22
00A4FBF0 792EB7F7 mscorlib_ni!System.IO.FileStream.Dispose(Boolean)+0x57
00A4FC20 792CA80B mscorlib_ni!System.IO.FileStream.Finalize()+0x1b

StackTraceString: <none>
HResult: 80070040

考察:
  • FileStreamがExceptionの発生源になっています。
  • FileStreamは、ファイル名を持っているはずなので、それを探ってみたいと思います。

~~~

打ち込みます(スタックトレースを表示します)

!CLRStack -p

結果:

0:002> !CLRStack -p
OS Thread Id: 0x2198 (2)
ESP       EIP 
00a4fac0 7c97845c [HelperMethodFrame: 00a4fac0] 
00a4fb64 799d0b09 System.IO.__Error.WinIOError(Int32, System.String)
  PARAMETERS:
   errorCode = <no data>
   maybeFullPath = <no data>

00a4fbc0 79a0ce90 System.IO.FileStream.WriteCore(Byte[], Int32, Int32)
  PARAMETERS:
   this = <no data>
   buffer = <no data>
   offset = <no data>
   count = <no data>

00a4fbe0 792eacd2 System.IO.FileStream.FlushWrite(Boolean)
  PARAMETERS:
   this = 0x010a3550
   calledFromFinalizer = <no data>

00a4fbf0 792eb7f7 System.IO.FileStream.Dispose(Boolean)
  PARAMETERS:
   this = 0x010a3550
   disposing = 0x00000000

00a4fc20 792ca80b System.IO.FileStream.Finalize()
  PARAMETERS:
   this = <no data>

考察:
  • FileStreamのthisポインタが露出しています。
  • FileStreamのthisポインタから、インスタンスの内容物を解剖します。
~~~

打ち込みます。FileStreamのthisポインタをダンプします。

!do 0x010a3550

結果:
0:002> !do 0x010a3550
Name: System.IO.FileStream
MethodTable: 793051f4
EEClass: 790df0f0
Size: 80(0x50) bytes
 (C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
Fields:
      MT    Field   Offset                 Type VT     Attr    Value Name
79330888  400018a        4        System.Object  0 instance 00000000 __identity
7992db14  4001b70        8 ...ream+ReadDelegate  0 instance 00000000 _readDelegate
7992dba0  4001b71        c ...eam+WriteDelegate  0 instance 00000000 _writeDelegate
7931c008  4001b72       10 ...ng.AutoResetEvent  0 instance 00000000 _asyncActiveEvent
79332eb8  4001b73       14         System.Int32  1 instance        1 _asyncActiveCount
7932e968  4001b6f      574     System.IO.Stream  0   shared   static Null
    >> Domain:Value  00161ee0:0109bab4 <<
793336dc  4001bfb       28        System.Byte[]  0 instance 010a4a90 _buffer
79330c6c  4001bfc       2c        System.String  0 instance 010a35a0 _fileName
79304738  4001bfd       44       System.Boolean  1 instance        0 _isAsync
79304738  4001bfe       45       System.Boolean  1 instance        0 _canRead
79304738  4001bff       46       System.Boolean  1 instance        1 _canWrite
79304738  4001c00       47       System.Boolean  1 instance        1 _canSeek
79304738  4001c01       48       System.Boolean  1 instance        0 _exposedHandle
79304738  4001c02       49       System.Boolean  1 instance        0 _isPipe
79332eb8  4001c03       34         System.Int32  1 instance        0 _readPos
79332eb8  4001c04       38         System.Int32  1 instance        0 _readLen
79332eb8  4001c05       3c         System.Int32  1 instance     4096 _writePos
79332eb8  4001c06       40         System.Int32  1 instance     4096 _bufferSize
7932ec38  4001c07       30 ...es.SafeFileHandle  0 instance 010a3640 _handle
793324f8  4001c08       18         System.Int64  1 instance 111877 _pos
793324f8  4001c09       20         System.Int64  1 instance -1 _appendStart
79304738  4001bf9      adc       System.Boolean  1   shared   static _canUseAsync
    >> Domain:Value  00161ee0:1 <<
79334198  4001bfa      57c ...ompletionCallback  0   shared   static IOCallback
    >> Domain:Value  00161ee0:0109d148 <<

考察:
  • _fileName が 010a35a0 を指しています。
~~~

打ち込みます。

!do 010a35a0


結果:
0:002> !do 010a35a0 
Name: System.String
MethodTable: 79330c6c
EEClass: 790ed65c
Size: 158(0x9e) bytes
 (C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
String: \\192.168.2.119\share\DD7Backup\FDSET\DD7Backup遠方(11日)(夜)(Set1)(遠).log
Fields:
      MT    Field   Offset                 Type VT     Attr    Value Name
79332eb8  4000096        4         System.Int32  1 instance       71 m_arrayLength
79332eb8  4000097        8         System.Int32  1 instance       70 m_stringLength
7933194c  4000098        c          System.Char  1 instance       5c m_firstChar
79330c6c  4000099       10        System.String  0   shared   static Empty
    >> Domain:Value  00161ee0:01091198 <<
7933189c  400009a       14        System.Char[]  0   shared   static WhitespaceChars
    >> Domain:Value  00161ee0:01091714 <<

考察:
  • 知りたかった情報が露出しました。

「指定されたネットワーク名は利用できません」の発生原因は、
バックアップのログファイルを書き込んでいる最中に、
NASがダウンしたからだ、と考えられます。


※ google-code-prettifyを組み込み、表示を最適化しました。

参考:SOS.dll (SOS デバッガー拡張)

2012年7月5日木曜日

Alphaleonis.Win32.Vss.VssSnapshotSetInProgressException

対策:
  • Volume Shadow Copyサービスを開始状態→停止状態にしました。
考えられる点:
  • 短時間で、スナップショットを作って消して、を繰り返すと発生するようです。

―――

Alphaleonis.Win32.Vss.VssSnapshotSetInProgressException はハンドルされませんでした。
  Message="The creation of a shadow copy is already in progress."
  Source="AlphaVSS.60.x64"
  StackTrace:
       場所 Alphaleonis.Win32.Vss.VssBackupComponents.StartSnapshotSet()
       場所 DiffBkCli.MSSnap.Start() 場所 C:\Proj\SyncAmaz\MSSnap.cs:行 90
       場所 SyncAmaz.Program.Main(String[] args) 場所 C:\Proj\SyncAmaz\Program.cs:行 167

―――

ログの名前:         Application
ソース:           VSS
日付:            2012/07/04 10:30:26
イベント ID:       13
タスクのカテゴリ:      なし
レベル:           エラー
キーワード:         クラシック
ユーザー:          N/A
コンピューター:       DD11
説明:
ボリューム シャドウ コピー サービス情報: CLSID {e579ab5f-1cc4-44b4-bed9-de0991ff0623} および名前 Coordinator を持つ COM サーバーを開始できません。[0x80070005, アクセスが拒否されました。
] 
イベント XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="VSS" />
    <EventID Qualifiers="0">13</EventID>
    <Level>2</Level>
    <Task>0</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2012-07-04T01:30:26.000000000Z" />
    <EventRecordID>9687</EventRecordID>
    <Channel>Application</Channel>
    <Computer>DD11</Computer>
    <Security />
  </System>
  <EventData>
    <Data>{e579ab5f-1cc4-44b4-bed9-de0991ff0623}</Data>
    <Data>Coordinator</Data>
    <Data>0x80070005, アクセスが拒否されました。
</Data>
    <Data>
    </Data>
    <Binary>2D20436F64653A2041444D50524F434330303030303135302D2043616C6C3A2041444D50524F434330303030303134342D205049443A202030303030323330342D205449443A202030303030343130382D20434D443A202076737361646D696E20206C69737420736861646F777320202D20557365723A204E616D653A20444431315C4B552C205349443A532D312D352D32312D3533323737373434382D323532383834363738392D323437363039333533372D31303031</Binary>
  </EventData>
</Event>
※ google-code-prettifyを組み込み、表示を最適化しました。

2012年6月30日土曜日

LibreOfficeとunoconvを、IIS6で動かした!

この問題の対処法が判りました:
Failed to connect to C:\Program Files\LibreOffice 3.5\program\soffice.exe (pid=10080) in 6 seconds.
Connector : couldn't connect to socket (WSAECONNREFUSED, Connection refused)
Error: Unable to connect or start own listener. Aborting. 
対策:(2012/07/05に大幅修正!)

① IUSRを止めて、一般的なアカウントに変更する。
Users権限を持っていれば十分です。Administrators権限は不要です。


参考:https://github.com/dagwieers/unoconv/issues/44

② AppDataのパスを固定化する。

それでもダメなら、AppDataのパスを固定化します。

その一般的なアカウントでログインし、レジストリエディタを立ち上げます。例:
runas /u:Pro4 /p regedit.exe
レジストリの次の場所のAppData値
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
こちらの指している場所を、具体的なパスに変更する。例:
C:\Documents and Settings\Pro4\Application Data
こんな感じです:

最初は次のようになっています:
%USERPROFILE%\Application Data

原因:(2012/07/05に修正)

長々と追跡しましたが、次の箇所で、失敗していたようです。
if ( !GetSpecialFolder( &ustrFile, CSIDL_APPDATA) )
普通はここで失敗しない手はずですが…

IUSR_XXXのアカウントを確認しますと、Guests権限になっていました。

また、IIS7.5では、IUSRは、NT AUTHORITY\IUSRに収まっていたりと、低権限故のアクセス制限が多数掛けられている可能性が見込まれます。

それで、CSIDL_APPDATAは、bootstrap.ini中の、$SYSUSERCONFIGを解決する際に必要とされます。
UserInstallation=$SYSUSERCONFIG/LibreOffice/3
utl::Bootstrap::locateUserInstallationが、それを取得しようとしますが、GetSpecialFolderで失敗します。
return UserInstall::E_Creation;
UserInstall::UserInstallError instErr_fin = UserInstall::finalize();まで戻りまして、次の様な具合で落ちます:
HandleBootstrapErrors( BE_USERINSTALL_FAILED );
「プログラムは起動できません。」「内部エラーが発生しました。」を表示する事になる様です:
FatalError(aMessage);

2012年4月5日木曜日

netatalk-2.xをCygwinでビルドしますとcat: command not found等を連発する件

Cygwinにて、netatalkのconfigureを実行中、Checking Berkeley DB libraryの辺りから挙動が怪しくなります:

checking Berkeley DB library (-ldb46)...
./configure: line 31862: cat: command not found
./configure: line 31865: cat: command not found
./configure: line 31866: cat: command not found
./configure: line 31889: rm: command not found
./configure: line 31919: sed: command not found


PATHが壊されているものと推測。

追求してみました。次の行で壊れています:

eval export $shlibpath_var=$bdblibdir

このshlibpath_varの出所は:

  dynamic_linker='Win32 ld.exe'
  # FIXME: first we should search . and the directory the executable is in
  shlibpath_var=PATH


ここで壊れる原因を作っているようです。

取り敢えずの回避策につきましては、

aclocal.m4を修正します:

  dynamic_linker='Win32 ld.exe'
  # FIXME: first we should search . and the directory the executable is in
  shlibpath_var=LIBPATH


PATHをLIBPATHに変えただけです。

この後、

autoconf
./configure --with-bdb=/usr/local
make

等でビルドを進めて行きます。

netatalk-3 の場合は、ちょっと下の『shlibpath_varの件は』を参照。

―――

bin/megatron/macbin.cの90行目辺り:

bin.gmtoff = tp->tm_gmtoff;

tm_gmtoffが無い、といわれた場合は、config.hのNO_STRUCT_TM_GMTOFFを定義する必要が有りそうです。

/* Define if the gmtoff member of struct tm is not available */
#define NO_STRUCT_TM_GMTOFF 1

本当は、configure.acを触って、cygwinの場合は、AC_DEFINE(NO_STRUCT_TM_GMTOFF)を加えるのがより良い方法と思いますが、今回はこれで。。。

―――

shlibpath_varの件は、/usr/share/aclocal/libtool.m4を修正した方が根本解決になるかもしれません。:

  # FIXME: first we should search . and the directory the executable is in
  shlibpath_var=LIBPATH


libtool.m4が無い場合は、Cygwinのsetup.exeでlibtoolを入れておきましょう

次に、再構築:

aclocal -I macros
autoconf
./configure --with-bdb=/usr/local
make

―――

NO_STRUCT_TM_GMTOFFの件は、configure.acを修正できます:

1箇所目。前後の文言で探して、太字部分を足す:

dnl --------------------- determine operating system from "target"
case "$host_os" in
...

 *cygwin*)   this_os=cygwin ;;esac

2箇所目。前後の文言で探して、太字部分を足す:

dnl ----- Cygwin specific -----
if test x"$this_os" = "xcygwin"; then
 AC_MSG_RESULT([ * CYGWIN specific configuration])
 AC_DEFINE(NO_STRUCT_TM_GMTOFF, 1, [Define if the gmtoff member of struct tm is not available])
fi

dnl ------ Check for sendfile() --------
次に、再構築:

autoconf
./configure --with-bdb=/usr/local
make

―――

checking whether to enable srvloc (SLP) support... no
./configure: line 15955: syntax error near unexpected token
`AVAHI,'

macros/zeroconf.m4で、PKG_CHECK_MODULESが解決できないために出ている様です。

Cygwinのsetup.exeで、pkg-configを入れましょう。

―――

/bin/sh ../../libtool --tag=CC    --mode=compile gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I../..      -I../../include -D_U_="__attribute__((unused))" -g -O2 -I../../sys -MT cache.lo -MD -MP -MF .deps/cache.Tpo -c -o cache.lo cache.c
../../libtool: line 879: X--tag=CC: command not found
../../libtool: line 912: libtool: ignoring unknown tag : command not found
../../libtool: line 879: X--mode=compile: command not found


netatalk付属のlibtoolの挙動が怪しかったら、/bin/libtoolから持って来ましょう。
―――

2011年9月7日水曜日

Access MDBファイルのリンクテーブル(ODBC)接続先を変更するソフト

EditMdbLink

Microsoft Access データベース(Mdbファイル)の、ODBCを経由したリンクテーブル接続先を容易に更新できるソフトです。

次のような場合に有効です:

SQL Serverからリンクテーブルを貼り付けている。開発するとき、お客様に納品するとき、別々のサーバに接続したい。

入手は、こちらから。

2011年9月6日火曜日

loを作成し、書き込む方法

PostgreSQLで、ラージオブジェクトを作成し、書き込む方法。

SELECT lo_creat(0);
結果: 17242

SELECT lo_open(17242, 393216);
結果: 0

SELECT lowrite(0, E'\x31\x32\x33'::bytea);
結果: 3

SELECT lo_close(0);
結果: 0

注意点:同じトランザクション内で実行いたします。そうでなければ、lo_openで開いたハンドルがlowriteに渡る頃には閉じていて、使えないようになります。こちらに注意書きが有りました。

2011年8月3日水曜日

Microsoft.VC80.CRT(8.0.50727.6195)は、Windows Updateから入手いたしましょう

[MS11-025] Visual C++ 2005 SP1 再頒布可能パッケージ セキュリティ更新プログラム (2011 年 6 月 14 日) について
http://support.microsoft.com/kb/2538242/ja

8.0.50727.6195
http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=ae2e1a40-7b45-4fe9-a20f-2ed2923aca62&displaylang=ja-nec
KB2538242が提示される様子

既に在るポスグレ8.2.x用(x86版)の関数を、ポスグレ9.0.4(x64版)向けに移植していました。
久しくDynamic linkにすると、ターゲットのマシンでDLLが読み込みできません。

マニフェストによるDLLのSide-by-side構成が有効になっているため、許可されているDLL(通常は同じバージョン又はより新しいバージョン)にのみ、実行時にリンクできるようになっています。

それは判っていましたが、8.0.50727.6195の入手方法がわかりませんでした。

私製のCheckMSVCrtで現状を確認し、最新のVC 8.0 SP1 ATL Patch (x64)を入れて見ましたが解決しませんでした。

どうやらより新しいMSVCrtが世に存在するようなのです。

しかし、まだ一般にはダウンロード提供されていないようです。Windows Update経由で入手しましょう。

2011/10/01追記:

ダウンロード提供場所を発見いたしました:
http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=ae2e1a40-7b45-4fe9-a20f-2ed2923aca62&displaylang=ja-nec

2011年7月20日水曜日

共有フォルダの移動・名前の変更・削除を制限できるかもしれないNoMoveFolder

ファイルサーバに保存しています共有フォルダ。

知らない間に、勝手に移動されたり、削除されたりして、大変な経験をなされたことはございませんか。

NoMoveFolderを利用することで、条件付きで制限することが可能です。

但し、これは魔法のような品では有りませんので: 動作の仕組みや、制限を正しく理解した上でご活用ください。

動作の仕組み:
  • ICopyHookという仕組みを利用します。
    Windows エクスプローラで、フォルダの移動・コピー・削除・名前の変更をする際に問い合わせする仕組みで、許す・許さないを決定できる仕組みです。
  • NoMoveFolderは、特定ファイルの有無を見て、フォルダ操作の不許可を決定します。
    ".NoMove"というファイルが入っていたら、そのフォルダを移動させない。
    ".NoRename"というファイルが入っていたら、そのフォルダの名前を変更させない。
    ".NoDelete"というファイルが入っていたら、そのフォルダを削除させない。
制限:
  • 共有フォルダを使用するすべてのパソコンに導入しないといけません。
    例:出入り業者様が持ち込んだパソコンで操作→防ぐことはできません。今日クリーンインストールしたばかりのパソコンで操作→十中八九、防ぐことはできません。
  • Windows エクスプローラ以外で操作する場合は多分、制限できません。
    例:ディスクをフォーマットする→防ぐことはできません。Windows PEやLinux等を起動してフォルダを触る→防ぐことはできません。コマンドプロンプト・VBScript等で操作→防ぐことはできません。
  • Windows XP又はそれ以降のOSで動きます。
    例:Windows NT 2000・Windows 98等、非対応のWindowsで操作→防ぐことはできません。
  • 導入していても、動作していなければ防ぐことはできません。
    例:ウィルス対策ソフトに検疫されてしまった→防ぐことはできません。
  • 特定ファイルを悪意の有る方に触られた場合は、お手上げです。
    例:パソコン分かる人が".NoDelete"を取り払ってしまった!→防ぐことはできません。スパイウェア・マルウェア対策ソフトが".NoXXX"を勝手に駆除してしまった!→防ぐことはできません。
  • やはり日頃の動作確認が肝要です→大変な手数!

結論としましては、かなり実験的で、業務における信頼性は余り高くない部類の一品と言えるでしょう。