お仕事関係の最近のブログ記事

もう延長サポートも切れてしまった、Windows 2000 ServerにWindows Updateを行ったらこのようなイベントが

ログの名前 アプリケーション
レベル エラー
イベントID 3009
ソース LoadPerf
全般 .NETFramework のパフォーマンス カウンタの文字列をインストールできませんでした。 エラー コードはレコード データにある DWORD 0 です。 データ:b7000000

「.NETFramework」の部分はいろいろあるようで、「DNS」などはよくググれるのですが、「.NETFramework」はなかなかありません。
たぶん、こちらにあるように影響ないとは思うのですが。

すでにパフォーマンスカウンターがインストールされていたからでた?うーん。。

robocopyで簡単バックアップを行うことにしました。

  • 再開可能モードとバックアップモード
  • この2つのモード。明確に説明してくれているドキュメントを見つけることができません。 おそらく、こちらのサイトで書いてあるような内容かと思います。

    /Z:
    再開可能モード。容量の大きなファイルのコピーを途中で止めても再開可能なようにする。

    /B:
    バックアップモード。Backup Operators or Administrators権限があればファイルに対してread権限がなくてもコピーできる。

    /ZB: 再開可能モードでコピーを試行し、「アクセスが拒否されました」エラーが発生したら自動的にバックアップモードに切り替える。

    robocopyをAdministrators権限のユーザで実行するのであれば、バックアップモードは不要かと思います。(たぶん)
    再開可能モードはコピー途中でコピーできなくなるようなことがなければ不要かと思います。
    また、コピー先がどこかの共有フォルダで、コピー中にネットワークが切断されるような状況が想定される場合は、逆に再開可能モードが良いかと思います。

  • /MIRの場合、ファイルやフォルダのACL(セキュリティ)やタイムスタンプのみの変更は反映されない
  • デフォルトだと、ファイルやフォルダのACL(セキュリティ)やタイムスタンプだけを変更は、/MIRの同期時に反映されません。
    反映させたい場合は、/SECFIXや/TIMFIXオプションをつけます。

  • とりあえず、バックアップのためにこんなオプションにしてみた
  • 極力同じ状態のコピー(バックアップ)を別パーティションにとるという状況の場合、このようなオプションがよいかなと

    robocopy c:\source d:\target /DCOPY:T /COPYALL /SECFIX /TIMFIX /MIR /R:0 /V /TS /FP /LOG:d:\log.log
  • -参考

SQL Server 2008がインストールされたWindows Server 2008のIPアドレスを変更したら、スケジュール実行していたメンテナンスプランの実行に失敗するようになりました。

エラーの内容は、こんな感じ

次のユーザーとして実行: hogeServer\hogeUser。Microsoft (R) SQL Server Execute Package Utility Version 10.0.2531.0 for 32-bit Copyright (C) Microsoft Corp 1984-2005. All rights reserved. 開始: 9:00:00 エラー: 2010-07-01 09:00:47.36 コード: 0xC00291EC ソース: {702D16DB-03DD-4810-AE57-5F78C7FBD7B8} SQL 実行タスク 説明: 接続 "ローカル サーバー接続" を取得できませんでした。接続が正しく構成されていないか、この接続に必要な権限が不足している可能性があります。 エラー終了 警告: 2010-07-01 09:00:47.36 コード: 0x80019002 ソース: OnPreExecute 説明: SSIS 警告コード DTS_W_MAXIMUMERRORCOUNTREACHED。Execution メソッドは成功しましたが、発生したエラーの数 (1) が最大許容値 (1) に達したため、処理が失敗しました。これは、エラーの数が MaximumErrorCount で指定された数値に達した場合に発生します。MaximumErrorCount を変更するか、エラーを解決してください。 警告終了 エラー: 2010-07-01 09:01:08.35 コード: 0xC0024104 ソース: データベースのバックアップ (トランザクション ログ) 説明: タスクの Execute メソッドが失敗し、エラー コード 0x80131904 (SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。 (provider: 名前付きパイプ プロバイダ error: 40 - SQL Server への接続を開けませんでした)) が返されました。タスクの Execute メソッドは成功し、"out" パラメータを使用して結果が示される必要があります。 エラー終了 エラー: 2010-07-01 09:01:55.36 コード: 0xC0024104 ソース: {0833154B-FB80-4389-A8A0-E0DE215FE2BB} 説明: タスクの Execute メソッドが失敗し、エラー コード 0x80131904 (SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。 (provider: 名前付きパイプ プロバイダ error: 40 - SQL Server への接続を開けませんでした)) が返されました。タスクの Execute メソッドは成功し、"out" パラメータを使用して結果が示される必要があります。 エラー終了 警告: 2010-07-01 09:01:55.36 コード: 0x80019002 ソース: OnPostExecute 説明: SSIS 警告コード DTS_W_MAXIMUMERRORCOUNTREACHED。Execution メソッドは成功しましたが、発生したエラーの数 (2) が最大許容値 (1) に達したため、処理が失敗しました。これは、エラーの数が MaximumErrorCount で指定された数値に達した場合に発生します。MaximumErrorCount を変更するか、エラーを解決してください。 警告終了 DTExec: パッケージの実行から返されました DTSER_FAILURE (1)。 開始: 9:00:00 完了: 9:01:55 経過時間: 115.297 秒. パッケージを実行できませんでした。. ステップは失敗しました。


メンテナンスプランの内、トランザクションログのバックアップに失敗しているようですが、失敗の原因はサーバが見つからないという単純なもののようでした。

IPアドレスを変更したことでサーバが見つからなくなっているのだと思いますが、メンテナンスプランを作成する際、IPアドレスを入力した記憶はありません。

しかし、メンテナンスプランの「接続の管理」を開くと、「サーバー名の選択または入力」の箇所に変更前のIPアドレスが書かれてました。しかも、「サーバー名の選択または入力」はなぜか非活性になっていて、IPアドレスを変更することができません。



・原因

メンテナンスプランを作成する際、Microsoft SQL Server Management Studioのログインを、IPアドレス指定のSQL Server認証で行うと、そのメンテナンスプランで作成される「ローカル サーバ接続」の接続も、IPアドレス指定のSQL Server認証になるようです。

なおMicrosoft SQL Server Management StudioにWindows統合認証でログインした場合は、Windows統合認証になります。

ただ、「サーバー名の選択または入力」の箇所が非活性になっているのはどうしても解除できず、結局メンテナンスプランを再作成しました。

64ビットWindowsでのお話。

WOW64上で動作する32ビットアプリケーションから、例えば「HKEY_LOCAL_MACHINE\SOFTWARE」にアクセスすると、Registry Redirectorにより「HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node」へリダイレクトされます。

もしWOW64上で動作する32ビットアプリケーションから、64ビットアプリケーション用レジストリにアクセスしたい場合は、RegOpenKeyEx等を呼び出す際にKEY_WOW64_64KEYというフラグを追加します。

(例)
RegOpenKeyEx(hKey, lpSubKey, 0, KEY_WOW64_64KEY | KEY_READ, phkResult)


似たようなもので、「RegDisableReflectionKey」「RegEnableReflectionKey」というAdvapi32.dllに実装されているAPIがありますが、こちらはRegistry Reflectionの有効・無効を行うようです。

「ウイルス対策ソフトの「フルスキャン」をかけたら数時間終わらない」
「マシンが遅いと思ったら、いつの間にかスキャンが走ってた」
という話を聞きます。

そんなにウイルス対策ソフトを知っているわけではありませんが、ウイルス対策ソフトには、大別して2種類のスキャンがあるかと思います。
呼び方はベンターによりそれぞれですが、自分のマシンにインストールしているMicrosoft Security Essentialsの呼び方をとると

  • リアルタイム保護(別名:オンアクセススキャン、リアルタイム検索)
  • クイック・フルスキャン(別名:オンデマンドスキャン、カスタム検索)

またスケジュールスキャンは、指定時間にフルスキャン等をやっているので、フルスキャン等の一種だと思います。

このフルスキャンがなぜ必要なのか、最近よくわかりません。
ぶっちゃけ(死語?)、そんなに必要ないと思います。

マルウェア等がなにか悪さをする場合は「マルウェア自身が実行される」事が大前提だと思います。そして、実行される前に(メモリにロードされれば)リアルタイム保護でそのマルウェア等は検出されるはずです。そうするとリアルタイム保護さえ動いていればそれでいいのではと思います。

それでもフルスキャンが必要かもしれないケースをいくつか考えてみました。

・ウイルス対策ソフトをインストールする前に、マシンで飼っていたマルウェアを検出するため
→そのマルウェアが悪さした時点でリアルタイム保護が検出するので、必要ない。

・昔のパターンファイル(シグネチャ)では対応していなかったが、現在のパターンファイルでは対応しているマルウェアを見つけるため
→そのマルウェアが悪さした時点でリアルタイム保護が検出するので、必要ない。

・友人にファイル一式を渡そうと思うが、そのファイルがマルウェアだったら絶交されるかもしれない。そのファイル一式を渡す前にスキャンしておきたい
→渡す(コピー)しようと時点でリアルタイム保護が検出するので、必要ない。

・マシンが遅くなるので、しょっちゅうウイルス対策ソフトを停止している。
→フルスキャンをすることで、停止している間にマルウェアに感染・活動するリスクを低減できるかもしれない。

・ウイルス対策ソフトをアンインストールした
→アンインストールする直前にフルスキャンすることで、アンインストール後、つかの間の安心を得ることはできるかもしれない。

普通にウイルス対策ソフトを常駐させていれば、やはりフルスキャンは必要ない気がします。

また、

  • ハードディスクが大容量になり、フルスキャンはますます時間がかかるようになる。
  • 速さを売り(さくさく軽快~♪など)にしているウイルス対策ソフトはよくあるが、フルスキャンはそんなに早くなっていないし、軽くもない。(と思う)
という運用上の問題もあるかと思います。
どうなんですかね。

iPhoneもiPadも持っておりませんが、iPhoneもiPadにはウイルス対策ソフトってあるのでしょうか。
気になったので、調べてみました。

  • ちなみにQAサイトは
  • アイホーンはOSがアップルなので心配ないです。ウィルスが心配なのはウィドウウズのOSの場合だけです。

    すばらしい回答です。「Macだから大丈夫」とたぶん同じ理屈なのでしょう。

まぁ、現状シングルタスクしか動作しないので、マルウェア作ったとしてもこっそり動作をさせるのは至難の業なのかもしれません。
しかしマルチタスクのiOSになったらどうなるのでしょうか。自分がマルウェア製作者(そんな技術ないけど)なら、今が一番の狙い時のような気もしますが。

久しぶりにMCP試験にチャレンジし、合格しました。

MCP70-562: Microsoft .NET Framework 3.5, ASP.NET Application Developmentです。


せっかくなので、今まで合格履歴をMCPメンバーサイトで調べておきました。

Exam ID Description Date Completed
562 TS: Microsoft .NET Framework 3.5, ASP.NET Application Development Jun 05, 2010
652 TS: Windows Server Virtualization, Configuration Oct 03, 2009
431 TS: MicrosoftR SQL Server? 2005 - Implementation and Maintenance Aug 25, 2009
557 TS: Microsoft Forefront Client and Server, Configuring Mar 22, 2009
528 TS: MicrosoftR .NET Framework 2.0 - Web-based Client Development Dec 06, 2008
536 TS: Microsoft .NET Framework - Application Development Foundation Nov 10, 2007
316 Developing and Implementing WindowsR-based Applications with MicrosoftR Visual C#? .NET and MicrosoftR Visual StudioR .NET Oct 11, 2005
315 Developing and Implementing Web Applications with MicrosoftR Visual C#? .NET and MicrosoftR Visual StudioR .NET Aug 28, 2005

P.S S君へ

遅くなりましたが、リンクつけました。もう手遅れ?


Windows Update エージェントの更新方法

  1. ここからダウンロードします。
  2. ダウンロードしたexeファイルを実行すると、次の画面が表示されるので[OK]ボタンをクリックします。
  3. WUA3_1
  4. 「同意します」を選択し、[次へ]ボタンをクリックします。
  5. WUA3_2
  6. インストールが始まります。
  7. WUA3_3
  8. 次の画面が表示されたらインストールは終了です。[完了]ボタンをクリックします。
  9. WUA3_4
  10. [完了]ボタンをクリックした後、以下の画面が表示された場合は、[はい]ボタンをクリックしOSの再起動をおこなってください。
  11. WUA3_5

以前も見たが、Windows 2008 Server上でこんなイベントログが発生。

ログの名前 システム
レベル エラー
イベントID 56
ソース TermDD
全般 ターミナル サーバーのセキュリティ層で、プロトコル ストリームにエラーが検出され、クライアントが切断されました。

調べてみると

解決方法 接続先にある、Virtual Server、VirtualPCをアンインストールする!!

「ネットワークのプロパティを開いて、Virtual Machine Network Servicesを
オフにする」だけでも 解決するかもしれません

ネットワークのプロパティを開いて、Virtual Machine Network Servicesをオフにする。 もしくは接続先にある、 Virtual Server、VirtualPCをアンインストールする。 本当に解決するのかは不明...。


気持ち悪いけど、無視で。

WCF+WS-Securityを使って、WCFクライアントから送信されるUserName,Passwordを元に認証後提供するWCFサービスを作っています。それにはサーバ証明書が必要なのですが、やっかいだったのでメモ。

(あくまでもテスト用です。運用環境では、ちゃんと証明書を購入すべきです。)

  1. (オレオレな)証明書をサーバ証明書として利用する場合
  2. 個々に書かれている通りでできました。

  3. (オレオレな)証明書を信頼されたルート証明機関に登録し、そのルート証明機関から発行した証明書をサーバ証明書として利用する場合
  4. まず、ここにある方法で証明書を発行しました。

    すると、WCFクライアントで

    「このプロセスにはこの秘密キーに対するアクセス権が必要です。」のようなことを言われてしまいます。

    とか言われてしまいます。どうも、

    makecert -sk SignedByCA -iv TempCA.pvk -n "CN=SignedByCA" -ic TempCA.cer SignedByCA.cer -sr currentuser -ss My

    とする際に、

    makecert -sk SignedByCA -iv TempCA.pvk -n "CN=SignedByCA" -ic TempCA.cer SignedByCA.cer -sr currentuser -ss My -pe -sky exchange

    としないといけないようです。

    しかし、上記コマンドを実行すると

    Error:Can't create the key of the subject ('SignedByCA')

    と怒られてしまいます。

    いろいろやってみたら、

    makecert - -iv TempCA.pvk -n "CN=SignedByCA" -ic TempCA.cer SignedByCA.cer -sr LocalMachine -ss My -sky exchange

    -pe と -sk SignedByCA のオプションをなくすとうまくいけたようです。なぜ?

    また、

    WCFクライアントを起動すると今度は、

    X.509 証明書 CN=SignedByCA のチェーンを構築できませんでした。使用された証明書には、確認できない信頼チェーンが含まれています。証明書を交換するか、certificateValidationMode を変更してください。失効の関数は証明書の失効を確認できませんでした。

    と怒られます。

    certificateValidationMode はPeerOrChainTrustを指定していましたが、これをNoneとかにしてしまったら、何のためにルート証明機関を登録したかわかりません。

    「失効の関数は証明書の失効を確認できませんでした。」がくさかったので調べてみると

    みたいに、RevocationModeをNoCheckにすればいけるのではというので、WCFクライアントのApp.configを

    <serviceCertificate>
    <authentication certificateValidationMode="PeerOrChainTrust" revocationMode="NoCheck"/>
    </serviceCertificate>

    としたがうまくいかず。

    ところが、コード上で直接プロパティをセットするとうまくいくようになりました。??

    ServiceReference.ServiceClient service = new TestClient.ServiceReference.ServiceClient();

    service.ClientCredentials.ServiceCertificate.Authentication.RevocationMode = System.Security.Cryptography.X509Certificates.X509RevocationMode.NoCheck;

    でも、失効リスト無視したらあまりテストにならないか

リンク

PLAYER(DVD付)【初回限定生産】 [CD+DVD] [Limited Edition] Oisix(おいしっくす)/Okasix(おかしっくす) たまひよSHOP ドミノ・ピザ【PC向けサイト】 楽天トラベル株式会社 NEC Direct ・NECダイレクト