サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
togarasi.wordpress.com
Hyper-V の統合サービスを見ると となりますが、ここの「ゲストサービス」って何?というのが今回ネタです。 Hyper-V 統合サービス https://docs.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/reference/integration-services を見ると、 Hyper-V ホストが仮想マシンとの間で双方向のファイル コピーを実行できるようにするためのインターフェイスを提供します。 とのこと。既定で無効なんですね。サービスコントロールマネージャーで見てみると ありました。 Copy-VMFile を使って、ホストマシンと仮想マシンとの間でファイルのコピーができるわけです。 使い方ですが、ホストマシン上の E:\Dotnet\ADO.NET\PoolingApp\Release\PoolingApp.e
聞かれたので、メモ替わりに。 アプリケーションプールの ID ですが、IIS 7.0 以降は既定で ApplicationPoolIdentity になっています。 使用する Web アプリによっては(例えば、画像管理とか)ファイルをブラウザから IIS にアップロードすることもあります。 その際、書き込み権限がなければ、当然ですが、アクセス違反が発生して、書き込むことができません。 こういうときには、どのアカウントがアクセスしてきたのか監査で調べることができます。 この設定で一度、再現させて、イベントログ – セキュリティ を見てみると…ありました! 今回の現象では、アカウント名 「Classic .NET AppPool」 が WriteData でアクセスしたが、権限が無いために エラーになったことがわかります。 IIS のアプリケーションプールの ID についてですが、Applic
Windows の環境変数についてです。環境変数には、システム環境変数とユーザー環境変数の 2 種類があります。 これらは、レジストリの以下の場所に格納されています。 システム環境変数 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment ユーザー環境変数 HKCU\Environment もちろん、画面でも表示できます。 レジストリに書きだしているわけですから、永続化された情報になります。 コマンドプロンプトを開き、set と入力しても環境変数を表示することができます。 ユーザーが Windows にログオンすると、シェルが起動され、環境変数を読み込みます。 その際、読み込む初期値が、このレジストリにエントリーされている値というわけです。 環境変数って API で参照/設定できないの?って疑問がありますが、Wi
Windows 7 & Windows Server 2008 R2 で追加になった Compatibility セクションの SupportedOS ですが Windows 8 & Windows Server 2012 用に GUID が追加されています。 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!–Windows 8 Mode–> <supportedOS Id="{4a2f28e3-53b9-4441-b
今回は、MSI のバージョンアップについてのネタです。 Windows Installer MSI パッケージには、3 タイプのバージョンアップが用意されています。 一度、リリースした製品に対して、バージョンアップ用のインストールパッケージを 作成する際には、この 3 つの中から、どれが適切なのかを選択して、作成する必要があります。 メジャーアップグレード メジャーアップグレード処理では、旧バージョンをサイレントアンインストールしてから新バージョンを インストールします(REMOVE="ALL"でサイレント実行する)。 もし、何かの情報を引き継ぎたいということであれば、自前で何らかの処理を加える必要もあります。 どんなときにメジャーアップグレードを使うかというと、 ・製品のバージョンアップ(v1.0 → v2.0) ・既存の製品からファイルが増えた(新しいコンポーネントが増えた) ・既存の
Vista 以降では何ともやっかいです。 とあるフォルダーが ジャンクションなのか、シンボリックリンクなのかを区別する方法です。 ハードリンク、ジャンクション、シンボリックリンク自体の説明は多くの方が書いているので割愛しますが、 ハードリンクは、対象はファイル(Windows NT 3.1 以降) ジャンクションは、対象はファイルとフォルダー(Windows 2000 以降) シンボリックリンクは、対象はファイルとフォルダー(Windows Vista 以降) となっています。フォルダーの属性を調べるので、まず思い浮かぶのは GetFileAttributes() http://msdn.microsoft.com/en-us/library/aa364944.aspx です。これでフォルダーの属性を調べてみると、ジャンクションもシンボリックリンクも DWORD dwAttr = GetF
Microsoft 製品には、QFE(Quick Fix Engineering)という修正モジュールがありますが、 すでにコンピューターにインストールされている QFE の一覧を出力する方法を紹介します。 サポートをやっていると、よく使うので、ネタにしました。 systeminfo コマンドを使う コマンドプロンプト(管理者権限でなくてもよい)を開き、systeminfo と入力します。すると のように表示されます。 リダイレクトすれば、もちろん、ファイルに出力することもできます。 wmic コマンドを使う お勧めの方法です。 コマンドプロンプト(管理者権限でなくてもよい)を開き、次のコマンドを入力します。 wmic qfe list すると のように表示されますが、これは非常に見づらいので、HTML フォーマットのファイル出力にするのが、お勧めです。 wmic qfe list /fo
またしても、割り込みネタです。 XP SP3 から Windows 7 にリモートデスクトップ接続を行う場合ですが、Windows 7 側で次のように ネットワークレベル認証(Network Level Authentication)のみを受け付ける設定になっていて… ネットワークレベル認証は、Windows Vista 以降(サーバー系 OS も含みます)のリモートデスクトップで サポートされている認証方式です。 [ 許可するリモートデスクトップ接続の種類 ] http://windows.microsoft.com/ja-JP/windows-vista/What-types-of-Remote-Desktop-connections-should-I-allow http://windows.microsoft.com/ja-JP/windows7/What-types-of-Rem
VS2010 起動時に VSTS for Database Professionals Sql Server Data-tier Application ロードエラー Visual Studio 2010 環境に SQL Server 2008 R2 をインストールする際の注意事項です。 インストールする順序で Visual Studio 2010(SQL Server Express をインストールしない)をインストール SQL Server 2008 R2 をインストール ということがあると思います。 この場合、Visual Studio 2010 の起動時や、ADO.NET Entity Framework あたりの 操作を行っていると、こんなエラーに出くわす可能性があります。 (逆順でインストールした場合は、エラーが発生しないかもしれません) さて、どうしたものか。 まずは、エラー
ちょっと深いデバッグネタを紹介していきたいと思います。 Vista 以降、OS がアプリケーションに対して提供するデバッグアーキテクチャは大きく変更されました。 XP/2003 までは、ワトソン博士というのがあったのですが、Vista 以降は、大体、こんな仕組みで動いています。 カーネルが介入することによって、エラーロジック(ワトソン博士)そのもののエラーがなくなったので、 ほぼ間違いなく、エラー処理が実行されるというわけです。 Windows Vista カーネルの内部: 第3部 より「クラッシュサポートの強化」 WER サービス(WerSvc)は、OS ブート時にカーネルに対して、ポートを登録する。 アプリケーションエラーは、一番最初に、カーネルが検知する。そして、カーネルがアプリケーションに 対して、エラーが発生したことを通知するわけです。(これが、First Chance) アプリ
2011 年になりました。今年もマイペースでブログを更新していこうと思います。 最初なので、小ネタです。何気に Windows 7 のデスクトップヒープサイズを調べていたのですが 知らぬ間に以前の OS からデフォルトサイズが変更(3MB→12MB)されていました。 よくよく調べてみると、Windows Vista SP1 以降で変更が入ったとのこと。(もちろん、32bit OSでの話し) デスクトップヒープサイズ x86 Windows Vista SP1 以降の OS で 12MB Windows Vista RTM 以前の OS(サーバー OS 含む)で 3MB x64 現状の x64 版 OS(クライアント OS & サーバー OS 共)では、すべて 20MB サイズの確認方法ですが、レジストリエントリーを見ると、わかります。 HKEY_LOCAL_MACHINE System C
DDK の開発サポートをしていると、よく使うコマンドなのでメモ代わりに書いておきます。 Windows Vista ではドライバをインストールする際、承認されたドライバをドライバストアという 特殊なフォルダに格納しておきます。 DriverStore : C:\Windows\System32\DriverStore 実際のドライバパッケージは、リポジトリとして FileRepository フォルダに保存されています。 FileRepository : C:\Windows\System32\DriverStore\FileRepository リポジトリフォルダに保存されているドライバは通常のファイル操作で削除することができません。 PnPUtil.exe というコマンドを使用します。使い方は、こんな感じです。 管理者権限でコマンドプロンプトを開く。 PnPUtil.exe -e でリ
そう、C++でプログラムを作成した際には、多くの場合、再頒布用のランタイムライブラリを プログラムと一緒に配置します。 例) msvcr90.dll、mfc90.dll など VS2005 C++、VS2008 C++ でのランタイムライブラリは、side-by-side という仕組みになった ライブラリを使用していました。これらは、 Windows\winsxs というフォルダー下にながーい名前のサブフォルダーを作って配置します。ただし、配置するためには マージモジュール(拡張子 msm)のファイルでインストールする必要があります。 VS2010 C++ ですが、また同じ side-by-side なんだろうなと思っていたら、何と、side-by-side では なくなっていました。えっ!?では、どこに? side-by-side ではなくなり、また、side-by-side 以前の配置
これまた、誰もがハマるであろうと思うシリーズです。(すでに、数名の人から問い合わせを受けました) Windows SDK v7.1 がリリースされたことは以前、このブログでも紹介しました。 で、インストールされた方もいるかと思います。 Windows SDK v7.1 がリリースされました https://togarasi.wordpress.com/2010/05/22/windows-sdk-v7-1-%e3%81%8c%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9%e3%81%95%e3%82%8c%e3%81%be%e3%81%97%e3%81%9f/ 「Visual Studio 2008 C++」 + 「Windows SDK v7.0」 の組み合わせでは、SDK のコンパイラやヘッダーを Visual Studio から参照するために、 [Micro
今更なのですが、Active X コントロールの相談を受けました。 既存の Active X コントロールを IE8 で検証したら、まったく動かないということで IE8 用に再設計すると…。Visual Studio 2008 で Active X なんて作ったことないので、すごーく久々です。 VC++6.0 では COM 大好きでよく作ったものです…。 VC++6.0 の頃と COM に関する IDE 操作もずいぶんと変わっていました。 とりあえず、HelloWorld レベルの HelloActiveX っていうサンプルを作っていろいろと思い出そうとしているのですが いきなり、以前、テストでよく使った Active X コントロールコンテナが無いことに気がつきました。 調べたところ、Visual Studio 2008 には無いと…。ではどうするのかと言うと Visual C++ 20
Visual Studio 2008 SP1 を Vista x86 にインストール (フルインストール) Windows SDK v6.1 (Windows SDK for Windows Server 2008 and .NET Framework 3.5) をインストール Microsoft Windows SDK v6.1 – Visual Studio Registration – Windows SDK Configuration Tool を実行する …とクラッシュします。あれ!? Windows SDK Configuration Tool というのは、WindowsSdkVer.exe です。 (Microsoft SDKs\Windows\v6.1\Setup にあります) 直接 v6.1 を指定して WindowsSdkVer -version:v6.1 実行しても
ちょっと、ディープなネタです。 WinDbg でダンプファイル解析を行う際、OS のシンボル情報が必要になります。 ダンプファイルを開いた際、シンボル情報が読み込めないと、 のように、”シンボル情報がないよ” と表示されてしまいます。 このまま進めていっても、ntdll.dll のシンボル情報がないので解析するのが非常に困難です。 きちんとシンボル情報を読み込ませると となります。 シンボル情報を含んでいるシンボルサーバーは、Microsoft がインターネット上で公開していますので 通常は、それを使えば何も問題はありません。 Microsoft が公開しているシンボル情報の URL http://msdl.microsoft.com/download/symbols WinDbg でこれを指定する場合には、File – Symbol File Path メニューで シンボルをキャッシュし
添付方法 exe に埋め込む(ビルド or MT.EXE)…埋め込みマニフェスト exe と同じフォルダに配置する…外部マニフェスト 注意点は 2 つあります。 マニフェストの優先順位 Vista 以降は 埋め込みマニフェスト を優先する Vista より前は 外部マニフェスト を優先する 外部マニフェストが有効にならない? OS が一度動作させた情報をキャッシュしてしまっているために、発生する。 (パスと実行モジュールのタイムスタンプを見ている) こんなときには、タイムスタンプを変える(リビルド)とか、パスを変えるようにします。 Create and Embed an Application Manifest (UAC) http://msdn.microsoft.com/en-us/library/bb756929.aspx そして、Windows 7 からは新しい項目「compati
きっと誰もがハマるであろうと思うので、書いておきます。ワタシもハマりました。 多くの方がきっとブログのネタにしているでしょう。 これです。ディクレトリの設定がない…どこへ行ってしまったのでしょう。 ヘルプ見てもいまいちわからないですよね。で、調べました。 VS2010 からは、個別のプロジェクト単位で、ディレクトリ設定を行うように変更になったとのこと。 確かに、プロジェクトのプロパティにはあります。 でも、共通のテンプレートを使おうと思ったり、別のフレームワーク用のテンプレートを使おうと思ったら いちいち、個別プロジェクトで設定していられないです。それに面倒。 ワタシの大好きな WTL もその一つです。 では、どうするのかというと、この部分がファイルに分離されているので、ファイルに記述することに なるんだそうだ。 ファイルの場所 C:\Users\<ユーザー名>\Local Setting
しばらくぶりの更新です。 MCP 試験 (MCPD EA へのアップグレード) 受けたり、年度末だったりで、時間が無かったというのを言い訳に…。 さて、今回は、あまりドキュメントが無いであろう Windows Installer ネタです。 まず、MSDN の Windows Installer ドキュメントは、ここ (http://msdn2.microsoft.com/en-us/library/aa372866.aspx) です。 初回ということで、すこし基本的なことを書いておきます。 Windows Installer は、クライアント/サーバー型のサービスプログラムということをご存じでしょうか。 サーバーの実体は、Local System アカウントとして実行されているサービスプログラムで、msiexec.exe という プロセスになります。 Windows Installer
Browser Helper Objects (BHO) ってどうやって作るの?っていう相談を受けたのでネタにします。 今更 COM かよ!っていう感じもしますが、COM は今でも重要なテクノロジなんですね。 まず、MSDN だと、ここに情報があります。 Visual Studio 2005 によるブラウザ ヘルパ オブジェクトのビルド http://msdn.microsoft.com/ja-jp/library/bb250489(vs.85).aspx この内容に沿って作成すると簡単なサンプルができます。 一緒に作成してみましょう!(ほとんど同じですが、VS 2008 を使ってみます。) 1) プロジェクトのセットアップ ここで、作成するのは DLL になります。追加のオプションは必要ありません。 → BHO は COM クラスになります。IE がホストになって、BHO の COM ク
Winodws XP では、特定のプログラムを起動する際にユーザーを切り替えて、プログラムを実行することが可能になりました。 Windows Vista では、この仕組みが少し変わり、マルチセッションという考え方になりました。 つまり、ユーザーログオンをしたままで、別のユーザーでログオンできるようになりました。 ただ、プログラムによっては、セッションが切り替わってしまうと都合が悪くなるものもあります。 例えば、画面を定期的にリフレッシュするような管理系のアプリケーションは、マルチセッションを意識すべきです。 そこで、今回は、ユーザーセッションの切り替えに対応する方法を紹介します。 メインウィンドウを生成するときに、セッション切り替えメッセージを送信するように登録する WTSRegisterSessionNotificationEx() WM_WTSSESSION_CHANGE メッセージハ
OS コンポーネントやサービスプログラムがインターネットアクセスする際にも、IE がプロキシの設定行えるように、 ProxyCfg.exe を使うことでプロキシの設定ができるわけですが、Vista 以降(Windows 7 も含みます)、ProxyCfg.exe が なくなってしまいました…。 ProxyCfg.exe, a Proxy Configuration Tool http://msdn.microsoft.com/en-us/library/aa384069(VS.85).aspx では、どうするのかというと、netsh winhttp コマンドというものを使います。 Netsh Commands for Windows Hypertext Transfer Protocol (WINHTTP) http://technet.microsoft.com/ja-jp/librar
マシンの入れ替えをする際によくあるシナリオです。 私も先日、XP から Vista に移行したのですが、コンピューター名は違えど、ユーザー名は同じにしてしまいがち。 自宅の PC ですし…(といいわけ) 普通に、元 SQL Server からデータベースをデタッチして、新 SQL Server にデータベースをアタッチする。 そして、SQL ログインユーザーを作成して、既定のデータベースを割り当てると エラー15023:ユーザーまたはロール’XXXXX’はカレントデータベースに既に存在します。 というエラーが発生することがあります。 実は、データベースユーザーは、SQL ログインアカウントの SID にマップされるので、このエラーが発生してしまいます。 この場合には、慌てずに以下の方法で解決しましょう。 KB314546 SQL Server を実行しているコンピュータ間でデータベースを移
先日、Windows 10 21H2 環境にて、PowerShell 7 のアップグレードを行い、7.2.6.0 に更新したのですが、その後、Get-AppxPackage でエラーが発生。 なんですか?これ。 言われた通り、Import-Module Appx をやってみましょうか。 はて、何ですか、これ。 Get-Help では引けるようです。 で、GitHub のサイトに不具合情報がありました。 -UseWindowsPowerShell を付与せよとのことです。 やってみます。 なんか処理ができたっぽいですね。 では、再度、Get-AppxPackage をやってみます。 できました。 はやく、修正してくださいよ。 あっ、Windows 11 では –UseWindowsPowerShell は使えないと書いてありました。 もう今更ですが、Exchange パブリックフォルダーを
Windows Vista で導入された機能の 1 つに「インストーラーの検出機能」があります。 特定パターンに合致するプログラムをインストーラーとして検出する ファイル名やリソースに特定の文字(setup、update、install など)を含む場合、インストーラーとみなす インストーラーとして検出された場合には、OS が自動的に権限昇格を提供して、管理者権限で実行されるように なります。そして、インストーラーがエラーとなった場合には、PCA(Program Compatibility Assistant)が 介入して、互換アシスタントダイアログ を表示します。 ちなみに、互換アシスタントダイアログ に表示される ”プログラム” や ”発行元” は、バージョンリソースから持ってきます。 バージョンリソースがないと ”不明” と表示されてしまいます。 インストーラープロセスに対して、PC
Windows Vista & 2008 では新しいイベントログ システムにバージョンアップしました。 Windows Event Log という名前になっています。 従来のイベントログは、*.evt という形式で保存されていましたが、Windows Event Log では *.evtx という XML 形式で保存されています。 また、サブスクライバモデルが導入されているため、イベントログを別の Windows に転送することも できちゃいます。便利ですね~。でも、今回のネタは新機能ではなく、従来からの SDK ネタです。 ちょっと古いような気もしますが、まだまだ需要はあると思います。 MSDN のイベントログに関する内容は Event Logging http://msdn.microsoft.com/en-us/library/aa363652.aspx にあります。ぜひ、参照してみ
ご存じの通り、Windows Vista 以降の IE では保護モードというものが導入されています。 MSDN: 保護モードの Internet Explorer の理解と機能 http://msdn.microsoft.com/ja-jp/library/bb250462(VS.85).aspx 最新の IE8 でも同様になります。 今回は Cookie の設定/取得についてのネタです。 Cookie の設定/取得では、動いている IE がどのモード(保護モードかどうか)で動いているのかを意識する必要があります。 どのモードで動いているのかによって、Cookie ストアの場所が異なるからです。 保護モード用の Cookie ストア Users\"username"\AppData\Roaming\Microsoft\Windows\Cookies\Low 通常の Cookie ストア U
開発サポートを行っているのですが、最近はデジタル署名に関する問い合わせをよく受けます。 社内で Vista & 2008 対応製品の開発が進んでいるという裏付けにもなります。ただ、残念なのが デジタル署名に関する知識が不足しているなぁと感じることです。どうも 「あの面倒な UAC の権限昇格ダイアログがあるので、とりあえず、デジタル署名しておこう」 という感じで、本来の意味ではなく、仕方なしにデジタル署名をするという方が多いようです。そもそも、デジタル署名って あなたに提供するファイルは、改ざんされていないことを証明します! という改ざん防止を目的としているために、発行元を表示するわけで…。別に UAC があるからっていうよりも本来の意味を知ってほしいものです。 ちなみに、署名するのは、最終的にビルドした人(会社)でないと意味ないです。ビルドした人でなければ、証明できないですからね。 さて
次のページ
このページを最初にブックマークしてみませんか?
『re-Think things』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く