JavaScript读取客户端的文件内容

 感觉JavaScript只要客户端许可真的可以说无所不能,自己写的一个小程序,验证客户端机器上是否装了某个文件,安装了的话运行,没安装的话转到下载页。

<! DOCTYPE html PUBLIC  " -//W3C//DTD XHTML 1.0 Transitional//EN "   " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml "   >
< head >
    
< title > Untitled Page </ title >
    
< script language = " javascript "  type = " text/javascript " >
       
function  FileTest()
       
{
          
//var myfolderspec="c:/";
          //ShowFolderFileList(myfolderspec);
          // ShowDriveList();
         var myfilename=""
         GetAllDisksOfMachine(); 
          
       }

       
  
// 在客户端各个盘中寻找xxjd.ini,找到后读取其中的内容     
   function    IsThisDiskHasTheIni(folderspec,drivename)
   
{
         
var   fso,   f,   fc,   s,HasIni=false;
         fso   
=   new   ActiveXObject("Scripting.FileSystemObject");
         f   
=   fso.GetFolder(folderspec);
         fc   
=   new  Enumerator(f.files);
         s   
=   "";
         
for   (;!fc.atEnd();fc.moveNext())
         
{
            s 
= fc.item(); 
            
if(s==(drivename+":/WINDOWS/xxjd.ini"))
           
{
               HasIni
=true;//有xxjd.ini,则检索其中指定路径是否存在xxjd.exe
               s=drivename+":/"+"/"+"WINDOWS"+"/"+"/"+"xxjd.ini";//xxjd.ini存放的完整路径
               var PathOfXxjdSystem=ReadALineFromIni(s);//从xxjd.ini中读出XXJD.exe存在的完整路径
               IsThisFolderHasXXJDexe(PathOfXxjdSystem);
           }
 
           
         }

         
if(HasIni==false)//如果没有xxjd.ini则肯定没装形象进度系统,转入下载页面
         {
             location.href
="http://www.baidu.com";
         }
 
  }

  
  
// 判断xxjd.ini中指定的xxjd.exe的路径包含的文件夹是否都存在,并判断是否存在xxjd.exe文件
   function  IsThisFolderHasXXJDexe(folderspec)
  
{
     
var arrFolders=new Array();//保存folderspec路径的各文件夹名称,先判定它们中是否都存在,若不存在,也转入下载页面  
      arrFolders=folderspec.split("/");
      
var MotherPath="",FolderName="";
      
for(var i=0;i<arrFolders.length-1;i++)
     
{
          MotherPath
+=arrFolders[i]+"//";
          FolderName
=arrFolders[i+1];
          
if(FolderName.length<1)//文件夹名为空,则跳出循环
         {
             
break;
         }

         
if(IsMotherPathHasFolder(MotherPath,FolderName)==false)//如果xxjd.exe的路径中有一个文件夹不存在,则下载
         {
             location.href
="http://www.baidu.com";
             
return;   
         }
   
     }
   
    
      
var   fso,   f,   fc,   s,HasExe=false;
      fso   
=   new   ActiveXObject("Scripting.FileSystemObject");
      f   
=   fso.GetFolder(folderspec);
      fc   
=   new  Enumerator(f.files);
      s   
=   "";
     
for   (;!fc.atEnd();fc.moveNext())
         
{
            s 
= fc.item();
            
if(s==folderspec+"XXJD.exe")
           
{
              HasExe
=true;
              exec(s);
           }
 
         }

     
if(HasExe==false)
         location.href
="http://www.baidu.com";  
  }

  

// 获取客户端电脑的各磁盘分区名加WINDOWS文件夹名,防止用户将系统装入除C盘外其它盘的情况
function  GetAllDisksOfMachine()
{
    
var DiskName="";//磁盘分区名
    var SigleDisk;
    
var fso=new ActiveXObject("Scripting.FileSystemObject");
    
var e=new Enumerator(fso.Drives);//创建包含客户机上所有硬盘分区的计数器
    var arrAllDisks=new Array();//保存所有磁盘分区字符串的数组
    var i=0;
    
for (;!e.atEnd();e.moveNext())
    
{
        SigleDisk
=e.item();
        
if(SigleDisk.DriveType==4)//如果是光盘则不要搜索
          continue;  
        DiskName
= SigleDisk.DriveLetter+":/"+"/"+"WINDOWS"+"/"+"/";//建立磁盘分区搜索字符串,如"C:/WINDOWS/"
        arrAllDisks[i]=DiskName;
        IsThisDiskHasTheIni(arrAllDisks[i],SigleDisk.DriveLetter); 
        i
++;  
    }
    
}


// 从inifilepath路径指定的xxjd.ini文件中读取xxjd.exe的路径
function  ReadALineFromIni(inifilepath)
{
    
var  fso,otf,s="",ForReading=1,result="";
    fso   
=   new   ActiveXObject("Scripting.FileSystemObject");
    otf 
= fso.OpenTextFile(inifilepath, ForReading);
    s
=otf.ReadLine();//读取第1行
    s=otf.ReadLine();//读取第2行
    otf.Close();
    
var fstr=s.replace(///g,"//");//把单""转成"/"
    var arr1=new Array();
    arr1
=fstr.split("=");//将第2行用“=”拆分,等号后的放入arr1[1]得到路径
    
    
var arr2=new Array();
    arr2
=arr1[1].split("//");//将arr1[1]用/拆分,放入arr2
    
    
var result=arr2[0]+"/";
    
for(var i=1;i<arr2.length;i++)
    
{
        
if(arr2[i].length<1)
          
{
             
continue
          }

        
if(i==arr2.length-1)
             
break;
       
else
         result
+=(arr2[i]+"/"); 
    }

    
return (result);//返回获取的XXJD.exe的路径
}




function  IsMotherPathHasFolder(motherpath,foldername)
{
      
var   fso,   f,   fc,   s,HasExe=false;
      fso   
=   new   ActiveXObject("Scripting.FileSystemObject");
      f   
=   fso.GetFolder(motherpath);
      fc   
=   new  Enumerator(f.SubFolders);
      s   
=   "";
      
var arr=new Array();
      
var path="";
      arr
=motherpath.split("//");
      
for(var i=0;i<arr.length;i++)
     
{
         
if(arr[i].length>0)
            path
+=(arr[i]+"/"); 
     }

     
for   (;!fc.atEnd();fc.moveNext())
         
{
            s 
= fc.item();
            
if(s==path+foldername)//路径motherpath下有名为foldername的文件夹
           {
              
return true;
           }
 
        }

       
return false
}


// 运行由pathofexe指定的完整路径名
  function  exec (pathofexe)
  
{     
          
var wsh = new ActiveXObject('WScript.Shell');     
           
if(wsh)
           
{     
               wsh.Run(pathofexe);
           }

   }
 
  
function  ShowDriveList() {
   
var fso, s, n, e, x;                     // 声明变量。
   fso = new ActiveXObject("Scripting.FileSystemObject");
   e 
= new Enumerator(fso.Drives);          // 在驱动器上创建 Enumerator。
   s = "";
   
for (;!e.atEnd();e.moveNext())           // 枚举驱动器集合。
      {
         x 
= e.item();
         s 
= s + x.DriveLetter;
         alert(x.VolumeName);
         s 
+= " - ";
         
if (x.DriveType == 3)              // 查看是否网络驱动。
            n = x.ShareName;                // 获取共享名。
         else if (x.IsReady)                // 查看驱动器是否已就绪。
            n = x.VolumeName;               // 获取卷名。
         else
            n 
= "[驱动器未就绪]";
         s 
+=  n + "<br>";
      }

     document.write(s); 
   
return(s);                               // 返回活动驱动器列表。
}

 
</ script >
</ head >
< body >
< form runat = " server "  id = " form1 " >
    
< input id = " btntest "  type = " button "  value = " button "  onclick = " FileTest(); "   />
</ form >
</ body >
</ html >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值