进程在每个系统中实现的方法是不一样的,在 win 98 中,系统提供 TOOLHELP32 API
接口,在 win NT 中,系统提供 PSAPI 函数, 2000而 win 2000 既支持
TOOLHELP 又支持 PSAPI,NT 系统还提供了 NATIVE API (NtQuerySystemInformation),这个函数功能十分强大,几乎可以查询所有的系统信息,调用此函数必须有SE_TCB_NAME特权。下面给出函数原型:
NTSTATUS
WINAPI
NtQuerySystemInformation(
int SystemInfoClass
PVOID SystemInfoBuffer,
ULONG SystemInfoBufferSize,
PULONG BytesReturned
);
当 SystemInfoClass 等于5时便可获取进程信息了。
关于 NT 系统下的特权(Privilege)及其描述见下表:
Privilege Constant Description
SE_ASSIGNPRIMARYTOKEN_NAME Required to assign
the primary token of a process.
SE_AUDIT_NAME Required to generate audit-log
entries. Give this privilege to secure servers.
SE_BACKUP_NAME Required to perform backup operations.
SE_CHANGE_NOTIFY_NAME Required to receive notifications
of changes to files or directories. This privilege
also causes the system to skip all traversal
access checks. It is enabled by default for
all users.
SE_CREATE_PAGEFILE_NAME Required to create a
paging file.
SE_CREATE_PERMANENT_NAME Required to create
a permanent object.
SE_CREATE_TOKEN_NAME Required to create a primary
token.
SE_DEBUG_NAME Required to debug a process.
SE_INC_BASE_PRIORITY_NAME Required to increase
the base priority of a process.
SE_INCREASE_QUOTA_NAME Required to increase
the quota assigned to a process.
SE_LOAD_DRIVER_NAME Required to load or unload
a device driver.
SE_LOCK_MEMORY_NAME Required to lock physical
pages in memory.
SE_PROF_SINGLE_PROCESS_NAME Required to gather
profiling information for a single process.
SE_REMOTE_SHUTDOWN_NAME Required to shut down
a system using a network request.
SE_RESTORE_NAME Required to perform restore
operations. This privilege enables you to set
any valid user or group SID as the owner of
an object.
SE_SECURITY_NAME Required to perform a number
of security-related functions, such as controlling
and viewing audit messages. This privilege identifies
its holder as a security operator.
SE_SHUTDOWN_NAME Required to shut down a local
system.
SE_SYSTEM_ENVIRONMENT_NAME Required to modify
the nonvolatile RAM of systems that use this
type of memory to store configuration information.
SE_SYSTEM_PROFILE_NAME Required to gather profiling
information for the entire system.
SE_SYSTEMTIME_NAME Required to modify the system
time.
SE_TAKE_OWNERSHIP_NAME Required to take ownership
of an object without being granted discretionary
access. This privilege allows the owner value
to be set only to those values that the holder
may legitimately assign as the owner of an object.
SE_TCB_NAME This privilege identifies its holder
as part of the trusted computer base. Some trusted
protected subsystems are granted this privilege.
This privilege is required to call the LogonUser
function.
SE_UNSOLICITED_INPUT_NAME Required to read unsolicited
input from a terminal device.
SE_MACHINE_ACCOUNT_NAME Required to create a
machine account. |