2014-10-05 51 views
-1

我在C创建的程序++时,我就用VS C++ 2012使用的释放模式程序捕捉到它的病毒

运行时库建设:“多线程(/ MT)

然后它由AVAST防毒的病毒。 捕获但如果我改变运行时库“多线程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; 
} 
+0

切换到更好的防病毒软件?另外,'_GetUserName'是一个保留的标识符。 – 2014-10-05 10:30:54

+0

您确定只是运行时会让您的程序被检测为病毒吗?这似乎很奇怪 – 2014-10-05 10:33:59

+0

你可以上传你的“病毒”到https://www.virustotal.com/并在这里发布报告网址? – wimh 2014-10-05 12:43:17

回答

0

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

设置>防病毒>倒在路滚动排除>文件路径排除>无论哪种类型,并将其添加或浏览到它然后将其添加

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。

+0

我认为抗病毒正在变得过度保护。 – Talon 2014-10-11 05:19:24