1、我用AdjustTikenPrivileges提升程序的权限,后两个参数设为nil,翻译时Delphi提示错误,为什么?MSDN上明明说可以设为NULL的。2、在使用LookupPrivilegevalue(nil,SE_DEBUG_NAME,luid)时,Delphi提示SE_DEBUG_NAME未定义,请问它在哪个单元中?3、帮我看看这段代码哪里有问题,执行时除了我的程序以外,无法显示其他正在运行的程序。(我在Win2000下测试的)
--------------------------------------------------
uses
windows,psapi,……;type
TFrm = class(Tform)
Lst: TListBox;
Btn1: TButton;
procedure Btn1Click(Sender: TObject);
private
procedure ShowProcFileName(var PId: Cardinal);
public
end;var
Frm: TFrm;implementation{$R *.dfm}procedure TFrm.Btn1Click(Sender: TObject);
var
lProc: array[0..255] of DWORD;
Need: Cardinal;
cProc: integer;
i: integer;
begin
Lst.Items.Clear;
EnumProcesses(@lProc,sizeof(lProc),Need);
cProc:=Need div sizeof(DWORD);
for i:=0 to cProc do
begin
ShowProcFileName(lProc[i]);
end;
end;procedure TFrm.ShowProcFileName(var PId: Cardinal);
var
hProc: Cardinal;
lMdl: array[0..255] of DWORD;
Need: Cardinal;
cMdl: Integer;
i: Integer;
szFN: PChar;
begin
hProc:=OpenProcess(PROCESS_ALL_ACCESS,false,PId);
EnumProcessModules(hProc,@lMdl,sizeof(lMdl),Need);
cMdl:=Need div sizeof(DWORD);
for i:=0 to cMdl do
begin
GetMem(szFN,255);
GetModuleFileName(lMdl[i],szFN,255);
Lst.Items.Add(szFN);
FreeMem(szFN);
end;
CloseHandle(hProc);
end;end.
-----------------------------------------------
--------------------------------------------------
uses
windows,psapi,……;type
TFrm = class(Tform)
Lst: TListBox;
Btn1: TButton;
procedure Btn1Click(Sender: TObject);
private
procedure ShowProcFileName(var PId: Cardinal);
public
end;var
Frm: TFrm;implementation{$R *.dfm}procedure TFrm.Btn1Click(Sender: TObject);
var
lProc: array[0..255] of DWORD;
Need: Cardinal;
cProc: integer;
i: integer;
begin
Lst.Items.Clear;
EnumProcesses(@lProc,sizeof(lProc),Need);
cProc:=Need div sizeof(DWORD);
for i:=0 to cProc do
begin
ShowProcFileName(lProc[i]);
end;
end;procedure TFrm.ShowProcFileName(var PId: Cardinal);
var
hProc: Cardinal;
lMdl: array[0..255] of DWORD;
Need: Cardinal;
cMdl: Integer;
i: Integer;
szFN: PChar;
begin
hProc:=OpenProcess(PROCESS_ALL_ACCESS,false,PId);
EnumProcessModules(hProc,@lMdl,sizeof(lMdl),Need);
cMdl:=Need div sizeof(DWORD);
for i:=0 to cMdl do
begin
GetMem(szFN,255);
GetModuleFileName(lMdl[i],szFN,255);
Lst.Items.Add(szFN);
FreeMem(szFN);
end;
CloseHandle(hProc);
end;end.
-----------------------------------------------
定义如下
SE_DEBUG_NAME = 'SeDebugPrivilege';