如何让我的程序以 system 的身份启动阿?我要实现的目的是 从任务管理器里,结束我的进程是显示 ‘该进程为关键系统进程,无法结束’我要这样的效果,瑞星不知道怎么做到的....
请大家帮忙...

解决方案 »

  1.   

    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.   
        
      其实,还有一个最简的方法,就是用系统的runas命令:   
      如:   
      runas   /env   /user:[email protected]   "notepad   \"my   file.txt\""