4

ここでプログラムのインストーラーを作成しています。インストール時にファイアウォールルールを追加したいと思います。私は少し研究しました、そして私が見つけた2つのアプローチがあります:

  1. netshコマンドの実行
  2. ファイアウォールAPIを使用してプログラムで

netshに関して-文書化されているコマンドには2つのタイプがあります-

  • "netshファイアウォール追加許可プログラムC:\ MyApp \ MyApp.exe"マイアプリケーション"ENABLE"、

    と-

  • "netshadvfirewallファイアウォール追加ルールname="マイアプリケーション"dir= in action = allow program =" C:\ MyApp \ MyApp.exe "enable = yes"

..どのオペレーティングシステムがどのオペレーティングシステムをサポートしていますか?念のため、両方を実行できると思います(xp、vista、win7をサポートしたい)

FirewallAPIに関して-それを使用することに何か利点はありますか?表面的にはもう少し複雑に見えます(ビスタで別のdllに接続する必要があるため、最初に実行しているOSを確認する必要があります)。

4

1 に答える 1

1

ファイアウォールが有効になっているかどうかを確認するだけの場合。あなたができる:

NetFwMgrType = Type.GetTypeFromProgID("HNetCfg.FwMgr", false);
INetFwMgr Manage = (INetFwMgr)Activator.CreateInstance(NetFwMgrType);
bool Firewallenabled = Manage.LocalPolicy.CurrentProfile.FirewallEnabled;

次に、アプリケーションを承認済みアプリケーションに追加できます。

INetFwAuthorizedApplications applications;
INetFwAuthorizedApplication application;

// Input Application Name
application.Name = “Internet Explorer”;

// Locate .exe
 application.ProcessImageFileName = "C:\\Program Files\\Internet Explorer\\iexplore.exe"

// Enable
application.Enabled =  true; 

// Authorize the Application
Type NetFwMgrType = Type.GetTypeFromProgID("HNetCfg.FwMgr", false); 
         INetFwMgr Manage = (INetFwMgr)Activator.CreateInstance(NetFwMgrType); 
         applications = (INetFwAuthorizedApplications)mgr.LocalPolicy.CurrentProfile.AuthorizedApplications;
applications.Add(application);

次の COM オブジェクトにアクセスする必要があります。

  • NetFwTypeLib
  • HNetCfg.FwMgr

これらは XP SP2 用の古い COM オブジェクトで書かれていることに注意してください。Microsoft が使用を推奨する場所: INetFwPolicy2。ただし、Vista、7、および 8 では機能します。古いコードを使用したいくつかの例を含む記事を含むドキュメントを次に示します。これが役立つかどうかわかりません。うまくいけば、そうなります。

ビスタ、7、8

XP サービスパック 2:

これらの例の詳細をブログに掲載します。と説明。

于 2012-11-20T00:42:49.400 に答える