레지스트리는 윈도우즈 방화벽의 예외 항목들을 아래 레지스티리에 저장하고 있다.
"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services
\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List".
그러므로, 어떠한 어플리케이션을 윈도우즈 방화벽에 예외처리로 등록하고 싶으면 단순히 아래와 같이 레지스트리에 추가해 주면 된다.
Quote:
[APP_PATH]:*:Enabled:[COMMENT]
이미 등록되어 있는 예외 항목에 다시 추가로 예외등록을 하는 경우를 막기 위해서 아래와 같이 한다.
Code (Copy):
RegRead, firewall_status, HKLM, SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile
\AuthorizedApplications\List, [APP_PATH]
If (!InStr(firewall_status, "Enabled"))
RegWrite, REG_SZ, HKLM, SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile
\AuthorizedApplications\List, [APP_PATH], [APP_PATH]:*:Enabled:[COMMENT]
이 방법으로 어떠한 언어로 개발한 어플리케이션이든 간에, 어플리케이션이 스스로 방화벽에 예외로 등록되게 할 수 있다.
----------------------------------------------------------------------------------------
멀티, 온라인 게임을 제작할 때 생기는 방화벽 문제를 간편하게 처리할 수 있는 코드입니다.
firewallregister(exe파일이름,등록이름)
var __regname,__regkey,__regfile,i
{
__regname = "";
for(i=0;i<string_length(program_directory);i+=1)
{
__regname += string_char_at(program_directory,i+1);
if string_char_at(program_directory,i+1) = "\"
__regname += "\";
}
__regname += "\\"+argument0+".exe";
__regfile = file_text_open_write("Multiplayer.reg");
__regkey = "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List]";
file_text_write_string(__regfile,"Windows Registry Editor Version 5.00");
file_text_writeln(__regfile);
file_text_write_string(__regfile,__regkey);
file_text_writeln(__regfile);
file_text_write_string(__regfile,chr(34)+__regname+chr(34)+"="+chr(34)+__regname+":*:Enabled:"+argument1+chr(34));
file_text_writeln(__regfile);
__regkey = "[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List]";
file_text_write_string(__regfile,__regkey);
file_text_writeln(__regfile);
file_text_write_string(__regfile,chr(34)+__regname+chr(34)+"="+chr(34)+__regname+":*:Enabled:"+argument1+chr(34));
file_text_close(__regfile);
}
execute_shell("Multiplayer.reg","");
firewallremove(exe파일이름)
var __regname,__regkey,__regfile,i
{
__regname = "";
for(i=0;i<string_length(program_directory);i+=1)
{
__regname += string_char_at(program_directory,i+1);
if string_char_at(program_directory,i+1) = "\"
__regname += "\";
}
__regname += "\\"+argument0+".exe";
__regfile = file_text_open_write("MultiplayerOff.reg");
__regkey = "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List]";
file_text_write_string(__regfile,"Windows Registry Editor Version 5.00");
file_text_writeln(__regfile);
file_text_write_string(__regfile,__regkey);
file_text_writeln(__regfile);
file_text_write_string(__regfile,chr(34)+__regname+chr(34)+"=-");
file_text_writeln(__regfile);
__regkey = "[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List]";
file_text_write_string(__regfile,__regkey);
file_text_writeln(__regfile);
file_text_write_string(__regfile,chr(34)+__regname+chr(34)+"=-");
file_text_close(__regfile);
}
execute_shell("MultiplayerOff.reg","");
사용예시
Abyssal Industry.exe 파일을 "심연산업"이름으로 방화벽에서 예외처리하고 싶다면
firewallregister("Abyssal Industry","심연산업");
예외처리를 해제하고 싶을 때는
firewallremove("Abyssal Industry");
라고 적어주시면 됩니다.