Our solution is to create a Setup program which you can "Run As Administrator" which does the following: 1) Name your setup program "SomethingOtherthenSetup" and then rename it to Setup.exe after the compile. 2) Execute: %windir%\system32\reg.exe flags HKLM\Software\OurKey SET DONT_VIRTUALIZE /s 3) Create the Directories OUTSIDE of "Program Files" and add an ACL for everyone to the directory (Code available on request) 4) When installing or updating an EXE file which does any network communications (TCP ports) Execute the Following Sequence of commands:
if (osver.dwMajorVersion < 6)
wsprintf(Cmd,"firewall delete allowedprogram \"%s\"",fh->PathtoProgram);
else
wsprintf(Cmd,"advfirewall firewall delete rule name=\"%s\"",fh->Name);
ShellExecuteEx(&si);
Sleep(250);
if (si.hProcess) {WaitForSingleObject(si.hProcess,INFINITE); CloseHandle(si.hProcess); }
if (osver.dwMajorVersion < 6)
wsprintf(Cmd,"firewall add allowedprogram \"%s\" \"%s\" ENABLE",fh->PathtoProgram,fh->Name);
else
wsprintf(Cmd,"advfirewall firewall add rule name=\"%s\" dir=in action=allow program=\"%s\" enable=yes",fh->Name,fh->PathtoProgram);
All very simple to install a user mode program which talks on the network.