2014-10-05 54 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