2011-02-02 15 views
2

スタブの役割を果たすClickOnceアプリケーションがあります。これは、別のインストーラをダウンロードする小さなアプリケーションです。動作する方法は、ペイロードをダウンロードし、実行して終了することです。これはC#.NETで書かれています。私の問題はペイロードがダイナミックであることです。アプリケーションがダウンロードしたペイロードが署名されていない場合、私のClickOnceアプリケーションに警告を表示させたい。この動作は、UACが有効な場合に自動的に表示されますが、スタブはさまざまなOSで実行されますが、UACが有効かどうかはわかりません。実行可能ファイルが実行されているときにWindowsが実行するという警告を単に呼び出すことができれば、私はそれを愛するでしょう - これは可能ですか?そうでない場合は、何をお勧めしますか?符号なし実行可能ファイルのユーザに警告する

答えて

2

ウェブサイトからダウンロードしたプログラムを実行しているときに表示されている警告についてお話しているとします。

Zone.Identifier代替データストリームをファイルに追加する必要があります。
あなたはthis libraryを使用していることを行うことができますWin32ので

var fs = new NTFS.FileStreams(filename) 
fs.Add("Zone.Identifier") 
using (var writer = new StreamWriter(fs["Zone.Identifier"].Open()) { 
    writer.WriteLine("[ZoneTransfer]") 
    writer.WriteLine("ZoneID=4") 
} 
1

は、Authenticodeの署名を検証するために使用される機能がWinVerifyTrustです。何の.NET BCL相当は(私の知る限りでは)ありませんが、C#のからそれを使用する方法についてはかなり良い記事をpinvoke.netあります

http://www.pinvoke.net/default.aspx/wintrust.winverifytrust

関連する問題