2009-06-30 53 views
0

我有這樣的代碼在這裏:結果從發佈

#include "windows.h" 
#include "Tlhelp32.h" 
#include "shellapi.h" 
#include <wchar.h> 
#include <fstream> 

bool enumProcesses(); 

int main() 
{ 
    enumProcesses(); 
    ShellExecute(NULL, L"open", L"log.txt", NULL, NULL, SW_SHOW); 

    return 0; 
} 



bool enumProcesses() 
{ 
    std::wofstream log("log.txt"); 
    PROCESSENTRY32 lppe; 
    MODULEENTRY32 lpme; 
    HANDLE hSnapshot; 
    HANDLE mSnapshot; 

    lppe.dwSize = sizeof(PROCESSENTRY32); 
    lpme.dwSize = sizeof(MODULEENTRY32); 
    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 

    if(hSnapshot == INVALID_HANDLE_VALUE) 
    { 
     log << L"Error creating process snapshot."; 
     return false; 
    } 

    if(!Process32First(hSnapshot, &lppe)) 
    { 
     log << L"Error enumerating first process."; 
     return false; 
    } 
    else 
    { 
     mSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, lppe.th32ProcessID); 

     if(mSnapshot != INVALID_HANDLE_VALUE) 
     { 
      Module32First(mSnapshot, &lpme); 
     } 

     if(wcscmp(lppe.szExeFile, L"[System Process]") != 0) 
     { 
      log << lpme.szExePath << "\n"; 
     }  
    } 

    while(Process32Next(hSnapshot, &lppe)) 
    { 
     if(wcscmp(lppe.szExeFile, L"System") != 0) 
     { 
      if((mSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, lppe.th32ProcessID)) != INVALID_HANDLE_VALUE) 
      { 
       if(Module32First(mSnapshot, &lpme)) { 
        log << lpme.szExePath << "\n"; 
       } 

      } 
     } 
    } 

    CloseHandle(hSnapshot); 
    CloseHandle(mSnapshot); 
    log.close(); 

    return true; 
} 

我的問題是,每當我調試在VC++使用F5或CTRL + F5這個代碼,它顯示我所有的進程,但是,當我創建發行版並運行它,有些事情甚至不顯示了,我不知道爲什麼..

這裏就是我說的:

發行版:

C:\WINDOWS\Explorer.EXE 
C:\Program Files\Java\jre6\bin\jusched.exe 
C:\WINDOWS\system32\ctfmon.exe 
C:\Program Files\Messenger\msmsgs.exe 
C:\WINDOWS\system32\wscntfy.exe 
C:\WINDOWS\system32\wuauclt.exe 
c:\Program Files\Microsoft Visual Studio 9.0\Common7\ide\mspdbsrv.exe 
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe 
C:\Program Files\Mozilla Firefox\firefox.exe 
C:\Documents and Settings\windows\Desktop\c++ projects\gggg\Debug\gggg.exe 
在創建調試

日誌:

\SystemRoot\System32\smss.exe 
\??\C:\WINDOWS\system32\csrss.exe 
\??\C:\WINDOWS\system32\winlogon.exe 
C:\WINDOWS\system32\services.exe 
C:\WINDOWS\system32\lsass.exe 
C:\WINDOWS\system32\svchost.exe 
C:\WINDOWS\system32\svchost.exe 
C:\WINDOWS\System32\svchost.exe 
C:\WINDOWS\system32\svchost.exe 
C:\WINDOWS\system32\svchost.exe 
C:\WINDOWS\system32\spoolsv.exe 
C:\WINDOWS\Explorer.EXE 
C:\Program Files\Java\jre6\bin\jusched.exe 
C:\WINDOWS\system32\ctfmon.exe 
C:\Program Files\Messenger\msmsgs.exe 
C:\Program Files\Java\jre6\bin\jqs.exe 
c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe 
c:\Program Files\Microsoft SQL Server\90\Shared\sqlwriter.exe 
C:\WINDOWS\System32\alg.exe 
C:\WINDOWS\system32\wscntfy.exe 
C:\WINDOWS\system32\wuauclt.exe 
c:\Program Files\Microsoft Visual Studio 9.0\Common7\ide\mspdbsrv.exe 
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe 
C:\Program Files\Mozilla Firefox\firefox.exe 
C:\WINDOWS\system32\NOTEPAD.EXE 
C:\WINDOWS\system32\cmd.exe 
c:\Documents and Settings\windows\Desktop\c++ projects\gggg\Release\gggg.exe 

是否有事可做的權限?

編輯:

縱觀1800信息的帖子,我想「逼」它在系統帳戶下運行,通過使用PSEXEC -i -d -s和它的工作...有什麼辦法我可以運行這個,而不需要做這樣的事情?

回答

3

我敢打賭,當你調試它時,你使用管理員權限在Visual Studio中運行它,而當你運行發佈版本時,它不會看到系統中的所有進程。這與任務管理器無法列出所有正在運行的進程的相同原因,除非您提升。

+0

我正在使用管理員權限的XP機器上運行此操作,所以我不知道如何進一步提升.. – 2009-06-30 07:16:36