掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ファイアウォール有効無効を取得するには (ID:71109)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ええ〜と・・・ OSは何でしょう・・・ 当然、VISTA以降なら管理者権限必要です。 C++なんで・・・ #include <netfw.h> 以下も必要だったかは未確認・・・ #include <objbase.h> #include <oleauto.h> 例えば・・・(C++ CLIで書いてます) static HRESULT WindowsFirewallInitialize(OUT INetFwProfile** fwProfile){ HRESULT hr = S_OK; INetFwMgr* fwMgr = NULL; INetFwPolicy* fwPolicy = NULL; _ASSERT(fwProfile != NULL); *fwProfile = NULL; // Create an instance of the firewall settings manager. hr = CoCreateInstance(__uuidof(NetFwMgr), NULL, CLSCTX_INPROC_SERVER, __uuidof(INetFwMgr), (void**)&fwMgr); if (FAILED(hr)){ printf("CoCreateInstance failed: 0x%08lx\n", hr); goto error; } // Retrieve the local firewall policy. hr = fwMgr->get_LocalPolicy(&fwPolicy); if (FAILED(hr)){ printf("get_LocalPolicy failed: 0x%08lx\n", hr); goto error; } // Retrieve the firewall profile currently in effect. hr = fwPolicy->get_CurrentProfile(fwProfile); if (FAILED(hr)){ printf("get_CurrentProfile failed: 0x%08lx\n", hr); goto error; } error: // Release the local firewall policy. if (fwPolicy != NULL){ fwPolicy->Release(); } // Release the firewall settings manager. if (fwMgr != NULL){ fwMgr->Release(); } return hr; } で、まず使えるように初期化して・・・ System::Boolean AdminUtil::AddFireWallRule(String^ ExecName, String^ RuleName){ System::Boolean bRet; HRESULT hr; HRESULT comInit; INetFwProfile* fwProfile = NULL; wchar_t wExecName[MAX_PATH]; wchar_t wRuleName[MAX_PATH]; bRet = false; RtlZeroMemory(wExecName, MAX_PATH * 2); RtlZeroMemory(wRuleName, MAX_PATH * 2); MarshalString(ExecName, wExecName, ExecName->Length * 2 ); MarshalString(RuleName, wRuleName, RuleName->Length * 2 ); comInit = CoInitializeEx( 0, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE ); __try { if (comInit != RPC_E_CHANGED_MODE){ hr = comInit; if (FAILED(hr)){ printf("CoInitializeEx failed: 0x%08lx\n", hr); __leave; } } hr = WindowsFirewallInitialize(&fwProfile); if (FAILED(hr)){ printf("WindowsFirewallInitialize failed: 0x%08lx\n", hr); __leave; } hr = WindowsFirewallAppAdd(fwProfile, wExecName , wRuleName ); if (FAILED(hr)){ printf("WindowsFirewallAddApp failed: 0x%08lx\n", hr); __leave; } bRet = true; } __finally{ WindowsFirewallCleanup(fwProfile); if (SUCCEEDED(comInit)){ CoUninitialize(); } } return bRet; } で、ルールを追加する・・・ 細かいところは、ヘッダーの中身読むなり、検索して もらえれば、ヒットしますヨ! ※ ファイアウォールの有効無効も当然取得・設定できます。 以上。参考まで
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.