1。我需要把程序在windows 2000 口令验证前,加载
     2、我需要把程序重新启动,关闭 windows 2000 
大哥们 有原代码吗
     先谢谢了!!!!!!!

解决方案 »

  1.   

    function My_ExitWindows(M_1Reboot_2Power: integer): Boolean; //重启(M:=1).关机(M:=2)
    var
    hToken: THANDLE;
    hProc: THANDLE;
    mLUID: TLargeInteger;
    mPriv, mNewPriv: TOKEN_PRIVILEGES;
    mBufferLength: DWord;
    begin
    Result:=false;
    if not (M_1Reboot_2Power in [1, 2]) then exit;
    hProc := GetCurrentProcess();
    OpenProcessToken(hProc, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hToken);
    LookupPrivilegeValue('', 'SeShutdownPrivilege', mLUID);
    mPriv.PrivilegeCount := 1;
    mPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    mPriv.Privileges[0].Luid := mLUID;
    AdjustTokenPrivileges(hToken, False, mPriv, (4 + (12 * mPriv.PrivilegeCount)), mNewPriv, mBufferLength);
    GetLastError;
    case M_1Reboot_2Power of
    1: Result := ExitWindowsEx(EWX_FORCE+EWX_REBOOT,0);
    2: Result := ExitWindowsEx(EWX_FORCE+EWX_POWEROFF, 0);
    end;
    end;
      

  2.   

    开机启动:
    function setAutoStart(flag: integer): boolean;
    var reg:TRegistry;
    begin
      result:=true;
      reg:=TRegistry.Create;
      reg.RootKey:=HKEY_LOCAL_MACHINE;
      TRY
        reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',true);
        if flag=0 then//flag为0时取消自动启动
           Reg.DeleteValue('软件标识');
        else//flag为非0时设置自动启动
           reg.WriteString('软件标识','"'+application.ExeName+'"')
      except
        result:=false;
      end;
      reg.CloseKey;
      reg.Free;
    end;
      

  3.   

    呵呵...
    AdjustTokenPrivileges(hToken, False, mPriv, (4 + (12 * mPriv.PrivilegeCount)), mNewPriv, mBufferLength);
    这一句是做什么的??