【发布时间】:2017-02-27 16:00:25
【问题描述】:
由于 Chrome/Firefox 不使用 Activex 对象,甚至由于安全问题而不允许使用本地配置文件(例如 AppData\Roaming)进行访问。但在我的一个客户请求中,我需要创建一个 .txt 文件,然后从上述目录启动 .exe。 2014 年之前的 Chrome 支持 NPAPI,它实际上与客户端配合良好,但在 2014 年,他们也停止支持 NPAPI,并且在 Chrome 上也标记为 Phased。所以我需要真正需要的最新技术来创建一个文本文件,然后从漫游文件夹启动 exe 文件。
是否有任何选项或客户端 api 来执行此操作?
更新
我在 ActiveXObject(旧方法)中关注 sn-p,现在我想将其转换为最新技术,以便非 IE 浏览器也可以使用它。
function createLoginFile(){
var isIE = /*@cc_on!@*/false || !!document.documentMode;
if(isIE == true)
{ var wsShell = new ActiveXObject("wscript.shell");
var roamingAppData = wsShell.ExpandEnvironmentStrings("%appdata%");
var fileObj = new ActiveXObject("Scripting.FileSystemObject");
var folderObj = new ActiveXObject("Scripting.FileSystemObject");
var folderLoc = roamingAppData+"\\Navigator";
var fileLoc = folderLoc + "\\NavigatorLogin.txt";
if(fileObj.FileExists(fileLoc)){
//empty file
var emptyFile = fileObj.OpenTextFile(fileLoc, 2, false);
emptyFile.close();
//write to file
var openFile = fileObj.OpenTextFile(fileLoc, 2, false);
openFile.WriteLine("Hello World!");
openFile.close();
loadExe(folderLoc)
}
else{
var newfile = fileObj.CreateTextFile(fileLoc,false);
//write to file
newfile.WriteLine("Hello World");
openFile.close();
loadExe(folderLoc)
}
}
}
function loadExe(folderLoc){
var oShell = new ActiveXObject("Shell.Application");
var filePath = folderLoc+"\\Navigator.exe";
oShell.ShellExecute(filePath,"","","open","1");
}
【问题讨论】:
-
请删除重复标志,因为 NPAPI 允许访问本地配置文件,Chrome 只是停止支持 NPAPI,现在他们允许使用,developer.chrome.com/apps/app_storage。 . .所以请删除重复的标志
-
您实际上无法删除标志,但模组会看到您的评论。您是否关心该解决方案是否适用于两种浏览器,还是只有 1 种足够好?
-
我需要在两种浏览器或至少在 Chrome 中使用它。
标签: javascript google-chrome firefox