c ++ - Oprettelse af Firewall-regel til en proces, der kører på en ikke-admin-brugerkonto

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et grundlæggende krav - at køre min applikation problemfrit på Windows ved at oprette firewallregler, når du bliver bedt om det, der har Windows-firewall tændt.


Når jeg logger ind på mit system som en bruger med administratorrettigheder, når jeg kører mit program første gang, kommer firewall'en med en prompt, jeg informerer den om at tillade min app og oprette en regel, nice.


Men når jeg tænder min pc, logger du på som en ikke-administreret bruger, og jeg kører min applikation, firewallen vises med en prompt som forventet. men når jeg klikker på de samme muligheder som jeg gjorde fra Admin-brugeren, fortsætter firewall-prompten kontinuerligt, selvom jeg klikker på Tillad/ok hver gang prompten vises. Prompten går kun væk, når jeg klikker på 'Annuller/Bloker' programmet fra at køre, hvilket naturligvis ikke er, hvad jeg vil gøre.


Så her kommer million-spørgsmålet, Hvad og hvordan skal jeg ændre min applikationskode for at fungere jævnt ved at oprette firewall-reglen med succes første gang jeg klikker på firewall-prompten for at tillade mit program; Nøjagtig den samme måde, som den fungerer, når jeg kører min applikation som bruger med administratorrettigheder.


Jeg har gjort min smule at søge online og er kommet til at forstå, at ikke-admin-brugere ikke kan ændre firewallregler (kan ikke engang oprette dem ???). BTW Jeg har testet dette scenario på Windows XP, Vista 7 både x86 og x64 med samme resultater.


Hvis nogen har stødt på og/eller løst lignende problemer, kan du dele din viden. Hvis jeg mangler noget, lad mig forstå, hvad jeg mangler.


Tak

Bedste reference


Jeg tror ikke, hvad du prøver, er muligt i en non-admin -konto. Hvad du måske prøver, er at få admin privilegium ved at bruge funktionen Windows runas ved at oprette en ny proces, så at brugeren bliver bedt om username og password af administratorkontoen, hvilket ville give dit program den nødvendige adgang til at oprette firewallregler for dit program.


Du kan også tage et kig på CreateProcessAsUser eller LogOnUSer. Grundlæggende for at lykkes i det, du forsøger at gøre, skal du have et token, der repræsenterer administratorkontoen eller en konto, der har administratorrettigheder. [6] [7]