使用/ MT防病毒编译时的程序将其捕获为病毒

时间:2014-10-05 10:18:45

标签: c++ visual-c++ antivirus virus microsoft-runtime-library

当我使用带有

的发布模式使用VS C ++ 2012构建程序时,我用c ++创建了一个程序

运行时库:" MultiThreaded(/ MT)

然后它被avast杀毒软件捕获为病毒。 但是,如果我将运行时库更改为" MultiThreaded DLL(/ MD)"然后avast不把它当作病毒捕获。

这是代码

LPWSTR _GetUserName();
void FileWriteLine(LPCWSTR filePath,LPCWSTR line);

int main()
{
    LPCWSTR userName = _GetUserName();
    FileWriteLine(userName,L"Hello World");
    return 1;
}


void FileWriteLine(LPCWSTR filePath,LPCWSTR line)
{
    wfstream fileHandle(filePath,ios::out | ios::app);
    fileHandle << line<<endl;
    fileHandle.close();
}

LPWSTR _GetUserName()
{
    LPWSTR username = new TCHAR[257];
    DWORD size = 257;

    if (!GetUserNameW(username,&size))
    {
        username = _wgetenv(L"USERNAME");
        if (username == NULL)
        {
            username = L"Error-Unknown";
        }
    }
    return username;
}

2 个答案:

答案 0 :(得分:0)

进入防病毒菜单并在防火墙中将创建可执行文件的文件夹设置为例外。

设置&gt;防病毒&gt;向下滚动到Exclusions&gt;文件路径排除&gt;在路径中输入并添加或浏览到它然后添加

答案 1 :(得分:0)

看起来你并不孤单。 http://blog.nirsoft.net/2009/05/17/antivirus-companies-cause-a-big-headache-to-small-developers/

http://social.msdn.microsoft.com/Forums/vstudio/en-US/f0e33f0b-fa4c-46bf-b515-186eb4d32660/code-gets-detected-as-a-virus

将您调用的每个调用存根,并确定哪个API调用是问题,然后将其替换为其他调用。 - 除非它只是导致问题的编译器开关的纯粹事实。分而治之。同时将信息提交给Avast。