如何在Worker角色实例上成功编辑代码中的防火墙规则?

时间:2015-09-28 19:39:42

标签: c# azure-worker-roles windows-firewall

我正在尝试一些在本地运行但在我的云实例上不起作用的代码。我假设它可能与权限相关,但我还无法修复它。这是我在本地调试我的工作者角色时的工作原理,但是当它发布时没有任何反应(现在正在暂存)。

psi.Verb = "runas"; 

我也尝试过使用

INetFwRule2 inboundRule = (INetFwRule2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
 inboundRule.Enabled = true;
 inboundRule.RemoteAddresses = ip;
 inboundRule.InterfaceTypes = "All";
 inboundRule.Protocol = (int)NetFwTypeLib.NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_ANY;
 inboundRule.Name = "BlockU Part 2";
 //inboundRule.Profiles = currentProfiles;
 inboundRule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK;
 // Now add the rule

 INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
 firewallPolicy.Rules.Add(inboundRule);

但这也没有帮助。

最后我尝试了防火墙api。这也在本地工作,但在最后一行上抛出了访问被拒绝错误。

{{1}}

2 个答案:

答案 0 :(得分:2)

我找到了azure forums,我需要启用我的辅助角色以提升的权限运行。通过将以下属性添加到WorkerRole元素

,可以在ServiceDefinition.csdef文件中完成此操作
<WorkerRole name="CloudService.Worker" vmsize="ExtraSmall"
            enableNativeCodeExecution="true">

并且还添加了

<Runtime executionContext="elevated" />
WorkerRole元素中的

元素。

两组代码都已成功运行配置更改。

答案 1 :(得分:0)

我在msdn博客中发现了一篇有趣的帖子,它使用了一个简化防火墙规则配置的库,可能会解决你的问题,

http://blogs.msdn.com/b/securitytools/archive/2009/08/21/automating-windows-firewall-settings-with-c.aspx