首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript Windows注销- logoff.exe

Javascript Windows注销- logoff.exe
EN

Stack Overflow用户
提问于 2013-07-11 05:42:30
回答 2查看 1.6K关注 0票数 1

我正在开发一个HTA文件,我正在尝试创建一个链接,在这个链接中,用户将在单击时注销。

我的函数:

代码语言:javascript
运行
复制
function fn_fecha()
{
WshShell = new ActiveXObject("WScript.Shell");
WshShell.Run("C:\\Windows\\System32\\logoff.exe");
}

还有这个电话:

代码语言:javascript
运行
复制
<tr>
<td WIDTH=300>
</td>            
<td>
<a id=hsair href="#" onclick="javascript:fn_fecha"  >SAIR</a>
</td>               
</tr>

我尝试了只有一个"\“(c:\windows\system32\logoff.exe)的函数和具有fn_fecha()的函数,但当我这样做时,它找不到文件。HTA文件驻留在服务器上(但不是通过IIS打开的)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-11 21:46:01

在Windows7 x64中,你可以找到文件夹"C:\ Windows \SysWOW64",其中包含一些32位应用程序和库,用于创建32位兼容环境。

(另请参阅:Why do 64-bit DLLs go to System32 and 32-bit DLLs to SysWoW64 on 64-bit Windows?)

在本例中,您打算调用C:\Windows\System32\logoff.exe,但不知何故,路径被重定向到了不存在的C:\Windows\SysWOW64\logoff.exe。所以这里你得到了一个找不到文件的错误。

你可以做一个实验来证明它。只需将可执行文件复制到C:\Windows\SysWOW64\test1.exe,然后尝试使用mshta运行以下代码。看到魔力了吗?

代码语言:javascript
运行
复制
    <script>new ActiveXObject("WScript.Shell").Run(
"C:\\Windows\\System32\\test1.exe");</script>

附注:令我惊讶的是,mshta.exe和wshom.ocx都是64位的,那么为什么Windows要直接使用SysWOW64呢?

票数 1
EN

Stack Overflow用户

发布于 2016-03-24 04:08:40

解决方案

不要指定路径C:\Windows\System32,而是使用特殊别名%WINDIR%\Sysnative

代码语言:javascript
运行
复制
function fn_fecha()
{
WshShell = new ActiveXObject("WScript.Shell");
WshShell.Run("%WINDIR%/Sysnative/logoff.exe");
}

解释

您的32位应用程序正在尝试访问%Windir%\System32文件夹中的代码,该文件夹是为64位代码保留的。Windows正在静默地重定向您的请求,如此Microsoft KB article所述

在运行64位版本的Windows...的计算机上的

...32位应用程序无法访问以下文件夹:

%WinDir%\System32

因此,32位应用程序无法启动System32文件夹中的任何64位应用程序。此外,32位应用程序无法检索有关System32文件夹或System32文件夹的子文件夹中的任何文件的文件信息...

出现此现象的原因是64位Windows (WOW64)提供了文件系统重定向。在64位版本的Windows...the中,%WinDir%\System32文件夹是为64位应用程序保留的。当32位应用程序尝试访问System32文件夹时,访问将重定向到以下文件夹:

%WinDir%\SysWOW64

默认情况下,文件系统重定向处于启用状态。

在本例中,SysWOW64文件夹中不存在logoff.exe,因此会产生file not found错误。本文解释了特殊别名%WinDir%\Sysnative绕过了不需要的文件重定向:

WOW64将Sysnative文件夹识别为特殊别名。因此,文件系统不会将访问重定向到Sysnative文件夹之外。这种机制灵活且易于使用。您可以使用Sysnative文件夹绕过文件系统重定向。

请注意,本文中提到的修补程序仅适用于Windows Server 2003/XP。此功能内置于更高版本的Windows中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17581409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档