Не удается получить правила приложения с помощью HNetCfg.FwMgr + AuthorizedApplications - PullRequest
1 голос
/ 16 февраля 2020

Я пытаюсь получить все авторизованные приложения с помощью C#:

ArrayList result = new ArrayList();
INetFwMgr firewallManager = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwMgr"));
foreach (INetFwAuthorizedApplication app in firewallManager.LocalPolicy.CurrentProfile.AuthorizedApplications)
{
    Console.WriteLine(app.Name);
}

AuthorizedApplications пуст, но в Панели управления я вижу много правил, включено или нет:

enter image description here

Что не так? Я пробовал другие профили, например DOMAIN / STANDARD, тот же результат.

1 Ответ

0 голосов
/ 16 февраля 2020
          console.write(result);                                                            check if forEach method brings you all aplications authorized with C#                          should be a loop instead                                                                                                                                                                      
            foreach (INetFwAuthorizedApplication app in 
           firewallManager.LocalPolicy.CurrentProfile.AuthorizedApplications)
            {
                 Console.WriteLine(app.Name);
            }e.g                      for(INetFwAuthorizedApplication app in  
            firewallManager.LocalPolicy.CurrentProfile.AuthorizedApplications){console.log(app.Name);}  Are you sure Name is the correct value?, shouldn't be app.name?

Кажется, вы можете перебирать список приложений, но не можете найти правильное имя для приложения. Используйте имя вместо имени. Попробуйте console.WriteLine (app.name) или console.WriteLine (app.GetName)

Возможно попробуйте это:

       public List<Object>(String name){

           ArrayList result = new ArrayList();
           INetFwMgr firewallManager = 






                           (INetFwMgr)Activator.CreateInstance 
                           (Type.GetTypeFromProgID("HNetCfg.FwMgr"));
                           foreach (INetFwAuthorizedApplication app in 
                            firewallManager.LocalPolicy             
                           .CurrentProfile.AuthorizedApplications)
                         {
                          if(app.Name == _name){
                             app.Name = name;
                            Console.WriteLine(app.Name);
                               }
                                   }
                             return result;
                                }
...