मैं फ़ायरवॉल के लिए चेक करने पर काम कर रहा हूं। निम्नलिखित कोड काफी आसानी से डिफ़ॉल्ट Windows फ़ायरवॉल की स्थिति की जाँच करता है:मशीन पर थर्ड पार्टी फ़ायरवॉल की जांच करें
INetFwMgr manager = GetFireWallManager();
bool isFirewallEnabled = manager.LocalPolicy.CurrentProfile.FirewallEnabled;
if (isFirewallEnabled == false)
{
Console.WriteLine("Firewall is not enabled.");
}
else
{
Consoe.WriteLine("Firewall is enabled.");
}
Console.ReadLine();
private static INetFwMgr GetFireWallManager()
{
Type objectType = Type.GetTypeFromCLSID(new Guid(firewallGuid));
return Activator.CreateInstance(objectType) as INetFwMgr;
}
सवाल तो बन जाता है: मैं एक गैर Windows फ़ायरवॉल की स्थिति कैसे पता करूं? यदि फ़ायरवॉल ठीक तरह से एकीकृत है, तो उपर्युक्त चेक केवल वही काम करेगा या क्या ऐसा करने के लिए एक बेहतर तरीका है? मैंने इस पोस्ट को चेक किया है: C# Windows Security Center Settings और यह पोस्ट: C# - How to chceck if external firewall is enabled? लेकिन दोनों अपेक्षाकृत अनुपयोगी साबित हुए।
मैं डब्लूएमआई एपीआई में देख रहा हूं लेकिन यह अब तक बहुत भ्रमित है, और एमएसडीएन के माध्यम से दस्तावेज बहुत ही आशाजनक नहीं रहा है। मैंने SelectQuery के साथ गड़बड़ करने का भी प्रयास किया है लेकिन अब तक मैं असफल रहा हूं। क्या कोई मुझे एक नए शुरुआती बिंदु में सहायता कर सकता है या जहां मैं तृतीय पक्ष फ़ायरवॉल से संबंधित बेहतर दस्तावेज़ीकरण/निर्देश ढूंढ सकता हूं?
संपादित करें: वर्तमान में मैं डब्लूएमआई में आगे की खोज कर रहा हूं, विशेष रूप से कक्षा FirewallProduct
एक पोस्ट द्वारा सुझाए गए अनुसार।
अद्यतन 2: मैं निम्नलिखित स्निपेट परीक्षण किया गया है:
string wmiNameSpace = "SecurityCenter2";
ManagementScope scope;
scope = new ManagementScope(String.Format("\\\\{0}\\root\\{1}", "localhost", wmiNameSpace), null);
scope.Connect();
ObjectQuery query = new ObjectQuery("SELECT * FROM FirewallProduct");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
लेकिन यह निम्न त्रुटि में परिणाम चल: Exception Invalid namespace
और यह 39 (scope.Connect()
) लाइन के लिए अंक। मैं आश्चर्यचकित नहीं होगा अगर मैंने बस पैरामीटर को याद किया है या कुछ गलत तरीके से स्वरूपित किया है, तो मुझे नहीं पता कि यह क्या है।
अद्यतन 3SecurityCenter2
SecurityCenter
करने से स्विच कर अब भी वही invalid namespace
त्रुटि अर्जित करता है।
अद्यतन 4 मैंने कंसोल ऐप को एक अलग बॉक्स (Win7 नहीं winserver08r2) पर ले जाया और यह उचित रूप से अपेक्षित रूप से वापस रिपोर्ट किया गया। तो यह वीएम के साथ एक मुद्दा हो सकता है जिसे मैं वर्तमान में परीक्षण कर रहा हूं। अगला चरण सक्रिय/निष्क्रिय स्थिति को पार्स करना है
अद्यतन 5 यह किसी अन्य Server08 बॉक्स पर परीक्षण किया गया था और उसी invalid namespace
त्रुटि प्रकट होती है। SecurityCenter2
के बजाय SecurityCenter
का उपयोग करना इस समस्या को हल नहीं करता है। क्या फ़ायरवॉल के साथ छेड़छाड़ रोकने के लिए कुछ अंतर्निहित सुरक्षा सुविधा विंडोज सर्वर ओएस का उपयोग है, या क्या सर्वर ओएस WMI सुविधाओं के एक विशिष्ट कुंजी सेट के साथ नहीं आया है?
आप इस पृष्ठ को http: //www.codeproject का पता लगाना चाहेंगे।कॉम/आलेख/37714/सॉफ्टवेयर-डेवलपमेंट-बिल्ड-अपना-विंडोज-सिकुरी नीचे दिए गए तीन संदर्भ लिंक कुछ उपयोगी पृष्ठों को इंगित करते हैं। – Gary
'VistaCenter2' नेमस्पेस Windows Vista, 7 और 8 के लिए है, XP के लिए आपको' सुरक्षा केंद्र 'नामस्थान का उपयोग करना होगा। – RRUZ
@wjhguitarman - फ़ायरवॉल स्थापित होने पर आपको यह पता लगाने की आवश्यकता क्यों है? –