2009-06-30 58 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