C++ 从发布到调试差异的结果
我这里有这个代码:C++ 从发布到调试差异的结果,c++,winapi,visual-c++,process,C++,Winapi,Visual C++,Process,我这里有这个代码: #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 );
#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;
}
调试时创建的日志:
\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“强制”它在系统帐户下运行,结果它成功了。。。有没有什么方法可以不用做这样的事情就运行它?我敢打赌,当您调试它时,您是在Visual Studio中以管理员权限运行它,而当您运行发布版本时,它不会这样做,因此它将无法看到系统中的所有进程。这与任务管理器无法列出所有正在运行的进程的原因相同,除非您升级。我敢打赌,在调试它时,您是在Visual Studio中以管理员权限运行它,而在运行发布版本时,它不会这样做,因此它将无法看到系统中的所有进程。这与任务管理器无法列出所有正在运行的进程的原因相同,除非您提升。我在具有管理员权限的XP机器上运行此任务,因此我不确定如何进一步提升。.我在具有管理员权限的XP机器上运行此任务,因此我不确定如何进一步提升。。
\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