网站公告列表

  没有公告

加入收藏
设为首页
在线投稿

您现在的位置: IT知识网 >> IT知识 >> 网络安全 >> 黑客攻击 >> 文章正文

 

  简单关机重启注销及惊涛本地开3389源码           

简单关机重启注销及惊涛本地开3389源码
作者:佚名 文章来源:不详 点击数: 更新时间:2006-12-5 20:34:39
简单关机重启注销代码
///////////////////////////////

program shut;

{$APPTYPE CONSOLE}

uses
  windows;

procedure ShowHelp;
begin
  WriteLn('=========== Shut or Reboot Commputer by hnxyy! ============');
  WriteLn('');
  WriteLn('用法:'+ParamStr(0)+' <-s/-S> or <-r/-R> or <-o/-O>');
  WriteLn('');
  WriteLn('说明:');
  WriteLn('');
  Writeln('-s/-S:关闭计算机');
  Writeln('-r/-R:重启计算机');
  Writeln('-o/-O:注销计算机');
  Writeln('');
  WriteLn('===========================================================');
end;

procedure ExitWindowsNT(uFlags: integer);
var
  hToken : THANDLE;
  tkp, tkDumb : TTokenPrivileges;
  DumbInt : DWORD;
begin
  FillChar(tkp, sizeof(tkp), 0);
  // Get a token for this process
  if not (OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES
  or TOKEN_QUERY, hToken)) then
 Writeln('OpenProcessToken failed !');

  // Get the LUID for the Shutdown privilege
  LookupPrivilegeValue(nil, pchar('SeShutdownPrivilege'),
 tkp.Privileges[0].Luid);

  tkp.PrivilegeCount := 1; // one privilege to set
  tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;

  // Get the shutdown provolege for this process
  AdjustTokenPrivileges(hToken, false, tkp, sizeof(tkDumb), tkDumb, DumbInt);

  // Cannot test the return value of AdjustTokenPrivileges
  if GetLastError <> ERROR_SUCCESS then
 Writeln('AdjustTokenPrivileges failed !');

  // shut down the system and for all applications to close
  if not ExitWindowsEx(uFlags, 0) then
 Writeln('ExitWindowsEx failed !');
end;

begin
  { TODO -oUser -cConsole Main : Insert code here }
  if (ParamCount<1) or (ParamCount>1) then
  begin
  ShowHelp;
  exit;
  end;
  if (ParamStr(1)='-s') or (ParamStr(1)='-S') then
  begin
  //关机
  ExitWindowsNT(EWX_POWEROFF + EWX_FORCE);
  end else
  if (ParamStr(1)='-r') or (ParamStr(1)='-R') then
  begin
  //重启
  ExitWindowsNT(EWX_REBOOT + EWX_FORCE);
  end else
  if (ParamStr(1)='-o') or (ParamStr(1)='-O') then
  begin
  //注销
  ExitWindowsNT(EWX_LOGOFF + EWX_FORCE);
  end else
  begin
  ShowHelp;
  exit;
  end;
end.

////////////////////////////////

惊涛本地开3389源码

program StartRdp;

{ }
{ 深入浅出3389 - 打开本机3389代码}
{ }
{ 版权所有 (c) 2004 陈经韬}
{ }
{ http://www.138soft.com}
{ }

uses
  Windows;

{$APPTYPE CONSOLE}

procedure AdjustToken();
var
hdlProcessHandle: Cardinal;
hdlTokenHandle: Cardinal;
tmpLuid: Int64;
tkp: TOKEN_PRIVILEGES;
tkpNewButIgnored: TOKEN_PRIVILEGES;
lBufferNeeded: Cardinal;
Privilege: array[0..0] of _LUID_AND_ATTRIBUTES;
begin
hdlProcessHandle := GetCurrentProcess;
OpenProcessToken(hdlProcessHandle,
(TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY),hdlTokenHandle);
LookupPrivilegeValue('', 'SeShutdownPrivilege', tmpLuid);
Privilege[0].Luid := tmpLuid;
Privilege[0].Attributes := SE_PRIVILEGE_ENABLED;
tkp.PrivilegeCount := 1; // One privilege to set
tkp.Privileges[0] := Privilege[0];
AdjustTokenPrivileges(hdlTokenHandle,False,tkp,Sizeof(tkpNewButIgnored),
tkpNewButIgnored,lBufferNeeded);
end;

function MyRegWriteInteger(RootKey:HKEY;SubKey:String;KeyName:String;Value:integer):Boolean;
var
key : HKEY;
ret : integer;
chg : DWORD;
begin
Result:=False;
key := 0;
ret := RegCreateKeyEx(RootKey,Pchar(SubKey),0,Nil,REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,Nil,key,@chg);
if (ret<>ERROR_SUCCESS) or (key=0) then exit;
try
RegSetValueEx(key,Pchar(KeyName),0,REG_DWORD,@Value,sizeof(Value));
finally
RegCloseKey(key);
end;
Result:=True;
end;

const
RootKey:array[1..6] of HKEY=(HKEY_LOCAL_MACHINE,
HKEY_LOCAL_MACHINE,
HKEY_LOCAL_MACHINE,
HKEY_LOCAL_MACHINE,
HKEY_LOCAL_MACHINE,
HKEY_LOCAL_MACHINE);
SubKey:array[1..6] of String=('SOFTWARE\Microsoft\Windows\CurrentVersion\netcache',
'SOFTWARE\Policies\Microsoft\Windows\Installer',
'SYSTEM\CurrentControlSet\Control\Terminal Server',
'SYSTEM\CurrentControlSet\Services\TermDD',
'SYSTEM\CurrentControlSet\Services\TermService',
'SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp');
KeyName:array[1..6] of String=('Enabled','EnableAdminTSRemote','TSEnabled',
'Start','Start','PortNumber');
Value:array[1..6] of integer=(0,1,1,2,2,3389);
var
i:integer;
begin
for i:=1 to 6 do MyRegWriteInteger(RootKey,SubKey,KeyName,Value);
AdjustToken;
ExitWindowsEx(EWX_REBOOT + EWX_FORCE, 0);
end.

程序及源码下载:

http://hnxyy.512j.com/Shut.rar

文章录入:wuyongjian    责任编辑:wuyongjian 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最 新 热 门
    相 关 文 章
    SyGate、WinGate和WinRo
    简单改装八爪线
    网通视讯:多种方式简单
    软、硬路由器之简单比较
    路由器NAT问题(简单介绍
    Cisco路由器是怎样被攻陷
    四个系列低端路由器简单
    软、硬路由器之简单比较
    简单的路由协议分析和配
    路由器NAT问题(简单介绍
     
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    Copyright© ITZS.NET All Rights Reserved
    QQ:272895858   ICP备案编号:吉ICP备07000044号
    IT知识网 站长:博浪