<< VMwarePlayer | 新VirtualPC VS VirtualPC2007 >>

自己署名でuiAccess=trueにする

自己署名を使って、uiAccess=trueを試してみた。

※Windows7 x64で確認しましたが、Vistaでは確認しておりません。


(1) VS2008でC++/CLRの適当なプロジェクトを作り、ビルド&起動確認。

wizardのままのFormだけで構いません。


(2) プロジェクトプロパティ→リンカ→マニフェストファイル

「UACによるUI保護のバイパス」を「はい」にする。


(3) ビルド&起動確認

「サーバーから紹介が返ってきました」と表示される。


(4) できたexeを "C:\Program Files\test2" にコピーする。

ここでは、"clitest4.exe" としています。

(5) 管理者でコマンドプロンプトを開き、

"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"

(パスを入れるのが面倒なので)


(6) フォルダ移動

cd "C:\Program Files\test2"


(7) ルート証明書を作る

makecert -n "CN=testroot,O=aaa,C=JP,E=foo@hoge.jp" -sv testroot.pvk -r testroot.cer

パスワードを聞いてきます。

clip_1.gif















最後にもう一度尋ねられるので、先ほどのパスワードを入れます。


(8) ルート証明書を使ってデジタル署名用の証明書

makecert -n "CN=test,O=aaa,C=JP,E=foo@hoge.jp" -sv test.pvk -ic testroot.cer -iv testroot.pvk test.cer

先ほどと同じようにパスワードを聞いてきます。rootとは別のパスワードが良いです。
フォルダはこんな感じ。

clip_18.gif


























(9) testroot.cerをダブルクリックしてルート証明書をインストール

clip_6.gif

































信頼されたルート証明機関にストアします。

clip_7.gif





























(10) 今度は、test.cerをダブルクリックして証明書をインストール

clip_8.gif































自動で個人に入ると思います。

clip_9.gif































(11) mmcでスナップインの追加→証明書を追加して

 信頼されたルート証明機関にtestroot
 個人にtestが追加されていることを確認します。

clip_20.gif































clip_21.gif




























(12) Signtool

先ほどのコマンドプロンプトで

Signtool signwizard

と入れると、デジタル署名ウィザードが始まります。

exeを選びます。

clip_12.gif





























カスタムを選びます。

clip_13.gif





























次の画面で「ファイルから選択」をクリック。

clip_14.gif




























X.509証明書の"test.cer"を選びます。

clip_15.gif


























次の画面で秘密キーファイルに、test.pvkを選びます。


パスワード画面後、「ルート証明書を含む証明のパスのすべての証明書」を選んで次へ。

clip_16.gif


























最後の完了でもう一度パスワードを入れます。


(13) 確認

C:\Program Files\test2\clitest4.exe

を動かすと、普通に起動します。

MT.exeで確認しても良いですし、バイナリを直接見ても、
uiAccess="true"が設定されていることがわかります。

clip_22.gif





























いきなりexeをバイナリで見る人もいないとは思いますが....

ルート証明書がないとやっぱり「サーバーから紹介が返ってきました」と表示される。

この方法だとBuildの度にサインしなければなりませんが、
2回目以降は、証明書はできているので、Signtool signwizard だけで良いです。
入力するものが決まれば、コマンドプロンプトでSigntoolを動かせるので、
ビルド後のイベントに追加して自動化できます。

念のため書くと、uiAccess="true"にしたコードは動作はしますが、
・証明書のインストールが必要。
・Windowsソフトウェアロゴを得るには、MSの特別許可が必要。

ということなので、汎用ソフトというより開発ツールの類でしょうか。




Tags: プログラムメモ
author : HUNDREDSOFT | - | -