谁有MAMS32汇编程序关机的原代码?

tanguangzhang 2003-09-12 05:09:16
谁有MAMS32汇编程序关机的原代码?有的请跟帖……
如知道方法的也请跟帖~~~
望高手指点。
谢谢~~~~!
...全文
106 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
W32API 2003-09-18
  • 打赏
  • 举报
回复
2K 下还要判断你当前用户是否具有关机权限
佛的光辉 2003-09-17
  • 打赏
  • 举报
回复

invoke ExitWindowsEx,EWX_SHUTDOWN,NULL
换为
invoke ExitWindowsEx,EWX_POWEROFF,NULL
tanguangzhang 2003-09-17
  • 打赏
  • 举报
回复
现在可以关Windows2000了,还有最后一个问题想请教:

如果我要实现无论在2000还是98都能关机要加些什么代码?
如何用代码判断操作系统是2000还是98?


请高手再指点一下!谢了~~!
tanguangzhang 2003-09-17
  • 打赏
  • 举报
回复
编译通过,但就是不能关机。(我的机子可是ATX电源的,支持系统直接关机的)

关机时出现提示如下:

现在可以安全地关机了!
豆腐 2003-09-17
  • 打赏
  • 举报
回复
mov ax,5301
xor bx,bx
int 15
mov ax,530e
xor bx,bx
mov cx,102
int 15
mov bx,1
mov cx,3
int 13
SoRoMan 2003-09-16
  • 打赏
  • 举报
回复
看到 invoke OpenProcessToken,eax,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,ADDR hToken
这行了吗?hToken不要换行.hToken 跟上ADDR
SoRoMan 2003-09-16
  • 打赏
  • 举报
回复
倒,还在说.
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
include \masm32\include\advapi32.inc
includelib \masm32\lib\advapi32.lib


.data
szMessage db "Would you like to Shutdown Windows now?",0
szTitle db "Shutdown",0
szShut db "SeShutdownPrivilege",0

.data?
ovi OSVERSIONINFO <>
tkp TOKEN_PRIVILEGES <>
hToken dd ?

.code

start:
invoke MessageBox,NULL,ADDR szMessage,ADDR szTitle,MB_ICONINFORMATION+MB_YESNO
.IF eax==IDYES
mov ovi.dwOSVersionInfoSize, sizeof ovi
invoke GetVersionEx,ADDR ovi

.if ovi.dwPlatformId == VER_PLATFORM_WIN32_NT
invoke GetCurrentProcess
invoke OpenProcessToken,eax,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,ADDR hToken
invoke LookupPrivilegeValue,NULL,ADDR szShut,addr tkp.Privileges[0].Luid
mov tkp.PrivilegeCount,1
mov tkp.Privileges[0].Attributes,SE_PRIVILEGE_ENABLED
invoke AdjustTokenPrivileges,hToken,FALSE, ADDR tkp, 0, NULL, 0
.endif

invoke ExitWindowsEx,EWX_SHUTDOWN,NULL

.if ovi.dwPlatformId == VER_PLATFORM_WIN32_NT
mov tkp.Privileges[0].Attributes,0
invoke AdjustTokenPrivileges,hToken,FALSE,ADDR tkp,0,NULL,0
invoke CloseHandle,hToken
.endif
.ENDIF
invoke ExitProcess,NULL
ret
end start

只接复制放在c:\masm32\bin下,然后在c:\masm32\bin提示符下输入:
ml/c /coff xxx.asm
连接:
link/SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib xxx.obj
注意空格.
tanguangzhang 2003-09-16
  • 打赏
  • 举报
回复
:(
tanguangzhang 2003-09-15
  • 打赏
  • 举报
回复
masm32例子中有?是那一个?放在那个文件夹里?:)
erlia 2003-09-13
  • 打赏
  • 举报
回复
masm32例子中有
Tiangua 2003-09-12
  • 打赏
  • 举报
回复
调用 API 嘛。
你想通过 I/O 操作关闭计算机?
SoRoMan 2003-09-12
  • 打赏
  • 举报
回复
TO:tanguangzhang(心碎男孩)

怎么还在这问?老罗不是给你一个嘛?只是有个换行错误.(33行)
W32API 2003-09-12
  • 打赏
  • 举报
回复
调用 API 嘛。
你想通过 I/O 操作关闭计算机?
tanguangzhang 2003-09-12
  • 打赏
  • 举报
回复
我要的就是NT系统下的关机MASM32代码,请问谁有那方面的代码?请跟帖~~~!谢了。
W32API 2003-09-12
  • 打赏
  • 举报
回复
MSDN 例程:
BOOL MySystemShutdown()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;

// Get a token for this process.

if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return( FALSE );

// Get the LUID for the shutdown privilege.

LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);

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

// Get the shutdown privilege for this process.

AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);

if (GetLastError() != ERROR_SUCCESS)
return FALSE;

// Shut down the system and force all applications to close.

if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))
return FALSE;

return TRUE;
}
W32API 2003-09-12
  • 打赏
  • 举报
回复
你不会调用 API ?
BOOL ExitWindows(
DWORD dwReserved,
UINT uReserved
);

BOOL ExitWindowsEx(
UINT uFlags,
DWORD dwReason
);

如是 NT 系统,会根据是否有关机权限来动作。否则返回错误信息。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧