gpt4 book ai didi

c# - 如何在辅助角色实例上成功编辑代码中的防火墙规则?

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:42 25 4
gpt4 key购买 nike

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

string strCmdText = string.Format("advfirewall firewall add rule name=\"BlockU\" protocol=any dir=in action=block remoteip={0}", ip);

ProcessStartInfo psi = new ProcessStartInfo("netsh.exe", strCmdText);
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
try
{
Process.Start(psi);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}

我也试过用

psi.Verb = "runas"; 

但这也没有帮助。

最后我像这样尝试了防火墙 api。这在本地也有效,但在最后一行抛出拒绝访问错误。

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);

最佳答案

我在 azure forums 上找到了我需要让我的 worker 角色以提升的权限运行。这可以在 ServiceDefinition.csdef 文件中通过将以下属性添加到 WorkerRole 元素来完成

<WorkerRole name="CloudService.Worker" vmsize="ExtraSmall"
enableNativeCodeExecution="true">

同时添加一个

<Runtime executionContext="elevated" />

WorkerRole 元素内的元素。

两组代码在配置更改后均成功运行。

关于c# - 如何在辅助角色实例上成功编辑代码中的防火墙规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32830531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com