如何在旧版(非 WebExtensions)Firefox 插件中获取 Windows 用户名?

IT技术 javascript firefox firefox-addon
2021-03-22 03:35:24

我正在使用 Firefox 插件(用 JavaScript 编写),需要确定当前登录的 Windows 用户。有没有办法做到这一点?

5个回答

这在 Windows 上有效:

function getUser() {
   return Components.classes["@mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment).get('USERNAME');
}      
此处未定义组件
2021-04-24 03:35:24
这个解决方案给了我这个错误TypeError: Components.classes is undefined,你认为这个错误的解决方案是什么?
2021-05-01 03:35:24
这在 Firefox 中不起作用,因为最初的问题是在问。
2021-05-05 03:35:24
@Scar :据我了解这个 Stackoverflow-post,您不能在常规网页中使用 Components.classes 。它适用于 Firefox 扩展/插件。
2021-05-11 03:35:24

您可以使用nsIEnvironment接口来获取USERNAME环境变量。

在获取用户名的过程中,是否有一个等效的 IE 不会给 ActiveX 带来麻烦(用户被告知存在安全风险等)?
2021-04-29 03:35:24

以下代码适用于我,而不是使用函数调用的 onload 事件:

var objUserInfo = new ActiveXObject("WScript.network");
document.write(objUserInfo.ComputerName+"<br>"); 
document.write(objUserInfo.UserDomain+"<br>"); 
document.write(objUserInfo.UserName+"<br>");  
var uname =  objUserInfo.UserName;
alert(uname);
已测试,但此代码仅适用于 Internet Explorer,在 Firefox 中不起作用。最好的选择是创建一个隐藏的控件/文本框来保存从后面的代码(服务器端)给出的值,使用 javascript 来获取你需要的值。考虑到当前的趋势,并不是每个人都使用 IE 来完成他们的工作。
2021-04-27 03:35:24
提问者使用firefox此答案使用 M$ ActiveX!它不起作用(我不敢相信我真的测试过它,但我做到了)。实际上有一个用于 firefox 的 ActiveX 插件(很久以前,大约在 FF2 时代),但 ActiveX 现在在 mozilla 阻止列表中。来源)。
2021-05-14 03:35:24

Firefox 已经内置了集成身份验证(很多人不知道)。
请参阅:https : //developer.mozilla.org/en-US/docs/Integrated_Authentication

这是一个简化配置的流行 Firefox 插件:https : //addons.mozilla.org/nl/firefox/addon/integrated-auth-for-firefox/

这里有一些额外的解释:http :
//justgeeks.blogspot.nl/2011/01/firefox-supports-integrated-windows.html

祝你好运!

<html>
<head>
    <script language="javascript">
        function GetUserName()
        {
            var wshell = new ActiveXObject("WScript.Shell");
            alert(wshell.ExpandEnvironmentStrings("%USERNAME%"));
        }
    </script>
</head>
<body OnLoad="GetUserName();">
</body>
</html>