本文目录一览:
- 1、Windows下怎么用C语言获取正在运行的程序的路径
- 2、在Windows Service 中怎么获取活动用户的进程列表
- 3、如何获得Windows任务管理器中所显示的进程列表
- 4、Windows如何显示进程路径
- 5、Windows 7/Windows Vista 任务管理器中如何显示进程的文件路径
- 6、VC 如何根据进程名称找程序的目录
Windows下怎么用C语言获取正在运行的程序的路径
很简单:
API函数:
GetModuleFileName(模块句柄,保存的字符数组,字符数组的大小);
一般来说,要获取正在运行程序的全路径,那就在第一个参数写个0
参数2是保存的数组,获取的路径将保存在这个数组
参数三是字符数组的大小
给你一个示例程序:
#include windows.h
#include stdio.h
void main()
{
char ExePlace[1024];/*保存地址的数组/
GetModuleFileName(0,ExePlace,1024);/*获取当前运行全路径*/
puts(ExePlace);/*输出获取到的路径*/
}
在Windows Service 中怎么获取活动用户的进程列表
在windows底层的api中,提供了以下的方法来满足需求:
WTSGetActiveConsoleSessionId: 获取当前active User的 session ID。
CreateProcessAsUser:用当前用户创建一个新的进程。
下面的程序提供了两个方法,一是获取当前活动的用户包括域名和用户名,二是用当前用户创建一个新的进程。
如何获得Windows任务管理器中所显示的进程列表
using System.Data;
using System.Data.SqlClient;
//混合登录模式 用户名(uid)为sa 密码(pwd)为123456; 没得密码就是 uid=sa;pwd=";
string connString = "Data Source=localhost;database=MyDatabase#1;uid=sa;pwd=123456";
//Windows登录
string connString = "Data Source=localhost;database=MyDatabase#1;"Trusted_Connsection=SSPI"
SqlConnection conn = new SqlConnection(connString);
Windows如何显示进程路径
安装完成后,界面上将出现“Wmic:root\cli”提示符,表明程序已在WMIC交互模式下工作。在命令提示符下输入“Process”,回车。可以看到每个进程的启动路径。这对于判断是否为木马程序有很好的帮助。-windows获取进程目录
Windows下:
1) 获取端口对应的进程ID (PID)
netstat -ao
Windows 7/Windows Vista 任务管理器中如何显示进程的文件路径
不过,在 Windows Vista 和 Windows 7 中可就方便多了。具体步骤如下: 在任务栏空白处点击鼠标右键,选择“启动任务管理器”。 切换到“进程”选项卡,点击工具栏上的“查看”-〉“选择列”。 在“进程页列”中,找到并勾选“映像路径名称”、“命令行”两项,按“确定”退出。 这两项,前者可以查看进程的文件路径,后者则可以查看所显示的进程是否被伪装。 如果觉得某项进程可疑,可以上网输入该进程名字查查,若是病毒进程,直接根据文件路径打开文件,将其执行权限去掉。-windows获取进程目录
VC 如何根据进程名称找程序的目录
你首先需要为VC下载一个Microsoft
Platform
SDK
for
Windows
XP
SP2,有了这个包以后,将psapi.h和psapi.lib拷贝到VC的include和lib目录,采用PSAPI编程:
1、用EnumProcesses函数列出当前所有进程
2、用OpenProcess打开进程
3、用GetProcessImageFileName函数就可以获取程序的完整目录
上面三个函数的资料在互联网上很完整,你可以用函数名作为关键字搜索一下就知道了。
下面举个例子:
#include
windows.h
#include
stdio.h
#include
tchar.h
#include
psapi.h
#pragma
comment(lib,
"psapi.lib")
void
PrintProcessNameAndID(
DWORD
processID
)
{
TCHAR
szProcessName[MAX_PATH]
=
TEXT("unknown");
TCHAR
szProcessPath[MAX_PATH]
=
TEXT("unknown");
//
获取进程句柄
HANDLE
hProcess
=
OpenProcess(
PROCESS_QUERY_INFORMATION
|
PROCESS_VM_READ,
FALSE,
processID
);
//
获取进程名称和路径
if
(NULL
!=
hProcess
)
{
HMODULE
hMod;
DWORD
cbNeeded;
if
(
EnumProcessModules(
hProcess,
hMod,
sizeof(hMod),
cbNeeded)
)
{
GetModuleBaseName(
hProcess,
hMod,
szProcessName,
sizeof(szProcessName)/sizeof(TCHAR)
);
}
GetProcessImageFileName(hProcess,
szProcessPath,
MAX_PATH);
}
//
打印进程名、进程号和路径地址.
_tprintf(
TEXT("%s
(PID:
%u)
%s\n"),
szProcessName,
processID,
szProcessPath
);
CloseHandle(
hProcess
);
}
void
main(
)
{
//
获取进程列表.
DWORD
aProcesses[1024],
cbNeeded,
cProcesses;
unsigned
int
i;
if
(
!EnumProcesses(
aProcesses,
sizeof(aProcesses),
cbNeeded
)
)
return;
//
计算当前一共多少个活动进程
cProcesses
=
cbNeeded
/
sizeof(DWORD);
//打印进程信息
for
(
i
=
0;
i
cProcesses;
i++
)
if(
aProcesses[i]
!=
)
PrintProcessNameAndID(
aProcesses[i]
);
}