線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2874
推到 Plurk!
推到 Facebook!

用其他身份執行程式

 
GE
一般會員


發表:4
回覆:16
積分:14
註冊:2003-01-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-24 14:32:28 IP:61.30.xxx.xxx 未訂閱
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;    const
  LOGON_WITH_PROFILE = 1;
  LOGON_NETCREDENTIALS_ONLY = 2;    function CreateProcessWithLogon(
                                 lpUsername: PWChar;
                                 lpDomain: PWChar;
                                 lpPassword: PWChar;
                                 dwLogonFlags: DWORD;
                                 lpApplicationName: PWChar;
                                 lpCommandLine: PWChar;
                                 dwCreationFlags: DWORD;
                                 lpEnvironment: Pointer;
                                 lpCurrentDirectory: PWChar;
                                 const lpStartupInfo: TStartupInfo;
                                 var lpProcessInfo: TProcessInformation
                               ): BOOL; stdcall;    type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    function CreateProcessWithLogon; external advapi32 name 'CreateProcessWithLogonW';    procedure TForm1.Button1Click(Sender: TObject);
var
  wUsername, wDomain, wPassword, wApplicationName: WideString;
  pwUsername, pwDomain, pwPassword, pwApplicationName: PWideChar;
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  wUsername := 'administrator';
  wDomain := '';
  wPassword := '123456';
  wApplicationName := 'cmd.exe';
  pwUsername := Addr(wUsername[1]);
  pwDomain := Addr(wDomain[1]);
  pwPassword := Addr(wPassword[1]);
  pwApplicationName := Addr(wApplicationName[1]);      FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
  StartupInfo.cb := SizeOf(TStartupInfo);
  if not CreateProcessWithLogon(pwUsername,pwDomain,pwPassword,LOGON_WITH_PROFILE,
                                pwApplicationName,nil,CREATE_DEFAULT_ERROR_MODE,
                                nil,nil,StartupInfo,ProcessInfo) then
    RaiseLastOSError;
end;    end.
可帶入其他使用者的Profile,使用上比LogonUser、CreateProcessAsUser簡單,省去設定SE_TCB_NAME privilege
ying0515
中階會員


發表:90
回覆:168
積分:81
註冊:2003-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-24 23:41:29 IP:218.165.xxx.xxx 未訂閱
真利害!不知如何查出來的! Delphi Man
------
Delphi
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-25 08:35:44 IP:210.208.xxx.xxx 未訂閱
在 Linux 下,我能體會及了解使用其它身分執行程式的意義 但在 Windows 下,我不了解使用其它身分執行程式有什麼用途 可否請長官指點迷津一下.. 謝謝
chfamy
中階會員


發表:87
回覆:161
積分:54
註冊:2002-05-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-25 09:16:41 IP:61.219.xxx.xxx 未訂閱
在Win2000及WinXP環境下,為有效管理用戶,一般不授權用戶Admin權限 ,就可用GE方式用程式方式以Admin登入用戶電腦,進行需要以Admin才 可進行之各項管理及設定,如更改Regedit相關資料等,使非常有用的, 端看您如何應用之。
GE
一般會員


發表:4
回覆:16
積分:14
註冊:2003-01-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-25 10:18:47 IP:61.30.xxx.xxx 未訂閱
引言: 在 Linux 下,我能體會及了解使用其它身分執行程式的意義 但在 Windows 下,我不了解使用其它身分執行程式有什麼用途 可否請長官指點迷津一下.. 謝謝
請不要叫我長官啦 因為我看到站上有人在問,所以我就試看看,至於有什麼用途我目前還是沒有什麼頭緒 這個函式只能使用在
Snooze
一般會員


發表:18
回覆:21
積分:7
註冊:2002-06-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-02 13:34:49 IP:61.220.xxx.xxx 未訂閱
引言:
引言: 在 Linux 下,我能體會及了解使用其它身分執行程式的意義 但在 Windows 下,我不了解使用其它身分執行程式有什麼用途 可否請長官指點迷津一下.. 謝謝
請不要叫我長官啦 因為我看到站上有人在問,所以我就試看看,至於有什麼用途我目前還是沒有什麼頭緒 這個函式只能使用在>< face="Verdana, Arial, Helvetica"> XP 2003 執行會有失敗的狀況 MSDN 上面說必須使用 CreateProcessAsUser & logonuser 這兩個api ..不曉得有沒有實際的範例? Nice to meet u
------
Nice to meet u
alanktop
一般會員


發表:7
回覆:21
積分:5
註冊:2005-03-01

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-05 23:24:19 IP:219.134.xxx.xxx 未訂閱
这种方式虽然方便直接,但是有个问题我很不明白,即:如何使进程能带参数运行? 楼主给出的例子是调用cmd.exe,那么如果想调用cmd.exe /k ipconfig /all呢? 好像不行的。如何使参数有效呢???
系統時間:2024-05-19 6:04:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!