自己署名でuiAccess=trueにする
プログラムメモ | 2009/10/20 Tue 05:24
| 自己署名を使って、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
パスワードを聞いてきます。
最後にもう一度尋ねられるので、先ほどのパスワードを入れます。
(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とは別のパスワードが良いです。
フォルダはこんな感じ。
(9) testroot.cerをダブルクリックしてルート証明書をインストール
信頼されたルート証明機関にストアします。
(10) 今度は、test.cerをダブルクリックして証明書をインストール
自動で個人に入ると思います。
(11) mmcでスナップインの追加→証明書を追加して
信頼されたルート証明機関にtestroot
個人にtestが追加されていることを確認します。
(12) Signtool
先ほどのコマンドプロンプトで
Signtool signwizard
と入れると、デジタル署名ウィザードが始まります。
exeを選びます。
カスタムを選びます。
次の画面で「ファイルから選択」をクリック。
X.509証明書の"test.cer"を選びます。
次の画面で秘密キーファイルに、test.pvkを選びます。
パスワード画面後、「ルート証明書を含む証明のパスのすべての証明書」を選んで次へ。
最後の完了でもう一度パスワードを入れます。
(13) 確認
C:\Program Files\test2\clitest4.exe
を動かすと、普通に起動します。
MT.exeで確認しても良いですし、バイナリを直接見ても、
uiAccess="true"が設定されていることがわかります。
いきなりexeをバイナリで見る人もいないとは思いますが....
ルート証明書がないとやっぱり「サーバーから紹介が返ってきました」と表示される。
この方法だとBuildの度にサインしなければなりませんが、
2回目以降は、証明書はできているので、Signtool signwizard だけで良いです。
入力するものが決まれば、コマンドプロンプトでSigntoolを動かせるので、
ビルド後のイベントに追加して自動化できます。
念のため書くと、uiAccess="true"にしたコードは動作はしますが、
・証明書のインストールが必要。
・Windowsソフトウェアロゴを得るには、MSの特別許可が必要。
ということなので、汎用ソフトというより開発ツールの類でしょうか。
Tags: プログラムメモ
※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
パスワードを聞いてきます。
最後にもう一度尋ねられるので、先ほどのパスワードを入れます。
(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とは別のパスワードが良いです。
フォルダはこんな感じ。
(9) testroot.cerをダブルクリックしてルート証明書をインストール
信頼されたルート証明機関にストアします。
(10) 今度は、test.cerをダブルクリックして証明書をインストール
自動で個人に入ると思います。
(11) mmcでスナップインの追加→証明書を追加して
信頼されたルート証明機関にtestroot
個人にtestが追加されていることを確認します。
(12) Signtool
先ほどのコマンドプロンプトで
Signtool signwizard
と入れると、デジタル署名ウィザードが始まります。
exeを選びます。
カスタムを選びます。
次の画面で「ファイルから選択」をクリック。
X.509証明書の"test.cer"を選びます。
次の画面で秘密キーファイルに、test.pvkを選びます。
パスワード画面後、「ルート証明書を含む証明のパスのすべての証明書」を選んで次へ。
最後の完了でもう一度パスワードを入れます。
(13) 確認
C:\Program Files\test2\clitest4.exe
を動かすと、普通に起動します。
MT.exeで確認しても良いですし、バイナリを直接見ても、
uiAccess="true"が設定されていることがわかります。
いきなりexeをバイナリで見る人もいないとは思いますが....
ルート証明書がないとやっぱり「サーバーから紹介が返ってきました」と表示される。
この方法だとBuildの度にサインしなければなりませんが、
2回目以降は、証明書はできているので、Signtool signwizard だけで良いです。
入力するものが決まれば、コマンドプロンプトでSigntoolを動かせるので、
ビルド後のイベントに追加して自動化できます。
念のため書くと、uiAccess="true"にしたコードは動作はしますが、
・証明書のインストールが必要。
・Windowsソフトウェアロゴを得るには、MSの特別許可が必要。
ということなので、汎用ソフトというより開発ツールの類でしょうか。
Tags: プログラムメモ
author : HUNDREDSOFT | - | -