BOOL DealExecCmd(CString strCommandLine)
{
USES_CONVERSION;
STARTUPINFO StartInfo;
memset(&StartInfo, '\0', sizeof(StartInfo));
StartInfo.cb = sizeof(StartInfo); //name structure
StartInfo.dwFlags = STARTF_USESHOWWINDOW;
StartInfo.wShowWindow = SW_HIDE; //隐藏DOC窗口
PROCESS_INFORMATION ProcInfo; //name structure
memset(&ProcInfo, 0, sizeof(ProcInfo));
bool flag = ::CreateProcess(NULL, strCommandLine.GetBuffer(), NULL, NULL, NULL, NULL, NULL, NULL, &StartInfo, &ProcInfo);
strCommandLine.ReleaseBuffer();
if(flag)
{
WaitForSingleObject(ProcInfo.hProcess,INFINITE);//此方法主要是等待进程处理
CloseHandle(ProcInfo.hThread);
CloseHandle(ProcInfo.hProcess);
}
return flag;
}
BOOL AddFSystemFireWallRuler(CString strfileName, CString strName )
{
CString fireWallRuler;
if( OSVersion::IsOSAtLeast( OSVersion::OSVersionEnum::WIN_VISTA ) )
{
fireWallRuler.Format(_T("netsh advfirewall firewall delete rule name=\"%s\" dir=in program=\"%s\""),strName, strfileName);
DealExecCmd( fireWallRuler);
fireWallRuler.Format(_T("netsh advfirewall firewall add rule name=\"%s\" dir=in program=\"%s\" action=allow"), strName, strfileName);
DealExecCmd( fireWallRuler);
}
else
{
fireWallRuler.Format(_T("netsh firewall add allowedprogram \"%s\" %s ENABLE"), strfileName, strName);
DealExecCmd( fireWallRuler);
}
return TRUE;
}
开启防火墙:
netsh firewall set opmode mode=enable
关闭防火墙:
netsh firewall set opmode mode=disable
|