2016-09-28 193 views
-3

私は、ログを作成するかテキストファイルを開くときに問題があるHTAを持っています。HTAエラー:エラー8070000cのために操作を完了できませんでした

これは、IE 11 にWindows 7 64ビット版で正常に動作します私は、Windows 10の64ビットでそれをしようとすると、私は次のエラーを取得する:

は8070000cエラーのため操作を完了できませんでした。エラーが上である

ラインは以下の通りです:

var fso = new ActiveXObject("Scripting.FileSystemObject"); 
    var f = fso.OpenTextFile('log\\log.txt',2,true); // <-- Error is on this line! 

アクセス権のエラーのようであるように思われます。私は約2時間を探していて、原因/解決策が何であるか把握できません。

ここでも、それは、Windows 7上で正常に動作しますが、いないWindows上で10

同じHTAは以下の通りです:

<!-- saved from url=(0014)about:internet --> 
<?xml version='1.0' encoding='UTF-8'?> 
<!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' xml:lang='en' lang='en'> 
<head> 
<HTA:Application Border='yes' ContextMenu='no' Caption='no' Scroll='auto' Singleinstance='yes' Windowstate='maximize' application='yes'> 
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> 
<meta http-equiv='X-UA-Compatible' content='IE=9' /> 
<title>KIOSK</title> 
<link rel='stylesheet' href='css/style.css'> 
<link rel='stylesheet' href='https//code.jquery.com/ui/1.12.0/themes/base/jquery-ui.css'> 
<script type='text/javascript' src='jQuery/jquery-3.1.0.js'></script> 
<script type='text/javascript'> 
    // Log File. 
    function writeToLog(dStamp, msg) { 
     var loc = window.location.pathname; 
     var dir = loc.substring(0, loc.lastIndexOf('\\')); 
     dir = dir + '\\log\\log.txt'; 
     // alert(dir); 
     //Create FSO Object 
     var fso = new ActiveXObject("Scripting.FileSystemObject"); 
     //First, make sure the LOG exists 
     if (!fso.fileExists("log\\log.txt")) { 
      //alert("FILE DONT EXIST!"); 
      try { 
       var f = fso.OpenTextFile(dir,2,true); 
       f.close(); 
      } catch(e) { 
       alert("The following error was found: " + e); 
       return; 
      } 
     } else { 
      dtTime = new Date(); 
      //This function was added because if the log file gets over a certain size, I want to rename it and make a new one 
      var f = fso.OpenTextFile(dir,1,false); 
      var fSize = f.Size; 
      if (fSize > 1000000) { //If file is larger than 1Mb, rename and create new. 
       fileExists = true; 
       fileNumber = 0; 
       newFileName = f + "-" + (dtTime.getMonth() + 1) + "-" + dtTime.getDate() + "-" + dtTime.getFullYear(); 
       while (fileExists) { 
        if (fso.fileExists(newFileName)) { 
         fileNumber++; 
         newFileName = f + "-" + (dtTime.getMonth() + 1) + "-" + dtTime.getDate() + "-" + dtTime.getFullYear() + "_" + fileNumber; 
         fileExists = true; 
        } else { 
         fileExists = false; 
        } 
       } 

       fso.MoveFile(f, newFileName); 

       //And create my new one 
       f = fso.OpenTextFile(dir,2,true); 
       f.close(); 
      } 
     } 

     //Now, open the log file 
     var f = fso.OpenTextFile(dir, 8); 

     //Now, write to the log file 
     //First, check to see if we want a date stamp before this message 
     if (dStamp == true) { 
      dtTime = new Date(); 
      nLine = dtTime + "\t" + msg; 
     } else { 
      nLine = "\t" + msg; 
     } 

     f.WriteLine(nLine); 

     //Finally, close the log file... until next time... 
     f.close(); 
    } 
</script> 
<body ondragstart='return false' style='text-align:center;'> 
    <input type="button" onclick="writeToLog(true,'Test Log HTA');" value="Test Log" /> 
</body> 
</html> 

すべてのヘルプは高く評価されます。

+0

おそらくUACは、 'mshta.exe" your.hta "'を昇格された特権で実行します。 – Lankymart

+0

あなたの時間はHTAから離れるのに費やされる方がよいでしょう。マイクロソフトは、これが「レガシー」技術であることを示しています。公式の言葉については、[this connect article](https://connect.microsoft.com/IE/feedback/details/785055/hta-application-tag-does-not-work-in-ie10)を参照してください。 –

+0

私はHTAが従来の技術であると理解しています。残念ながら、それは私が現在取り組んでいることです。 – dEf

答えて

0

OpenTextFileに間違った値が渡されていて、基本的にすべての問題が発生しているようです。 誰かがそれを必要とするならば、修正され「働く」スクリプトは以下の通りです。 :)

// Log File. 
function writeToLog(dStamp, msg) { 
    var loc = window.location.pathname; 
    var dir = loc.substring(0, loc.lastIndexOf('\\')); 
    dir = dir + '\\log\\log.txt'; 
    // alert(dir); 
    //Create FSO Object 
    var fso = new ActiveXObject("Scripting.FileSystemObject"); 
    //First, make sure the LOG exists 
    if (!fso.fileExists(dir)) { 
     //alert("FILE DONT EXIST!"); 
     try { 
      var f = fso.CreateTextFile(dir, true); 
      f.close(); 
     } catch(e) { 
      alert("The following error was found: " + e); 
      return; 
     } 
    } else { 
     dtTime = new Date(); 
     //This function was added because if the log file gets over a certain size, I want to rename it and make a new one 
     var f = fso.OpenTextFile(dir,1,true,0); 
     var fSize = f.Size; 
     if (fSize > 1000000) { //If file is larger than 1Mb, rename and create new. 
      fileExists = true; 
      fileNumber = 0; 
      newFileName = f + "-" + (dtTime.getMonth() + 1) + "-" + dtTime.getDate() + "-" + dtTime.getFullYear(); 
      while (fileExists) { 
       if (fso.fileExists(newFileName)) { 
        fileNumber++; 
        newFileName = f + "-" + (dtTime.getMonth() + 1) + "-" + dtTime.getDate() + "-" + dtTime.getFullYear() + "_" + fileNumber; 
        fileExists = true; 
       } else { 
        fileExists = false; 
       } 
      } 

      fso.MoveFile(f, newFileName); 

      //And create my new one 
      f = fso.CreateTextFile(dir, true); 
      f.close(); 
     } 
    } 

    //Now, open the log file 
    var f = fso.OpenTextFile(dir,8,true,0); 

    //Now, write to the log file 
    //First, check to see if we want a date stamp before this message 
    if (dStamp == true) { 
     dtTime = new Date(); 
     nLine = dtTime + "\t" + msg; 
    } else { 
     nLine = "\t" + msg; 
    } 

    f.WriteLine(nLine); 

    //Finally, close the log file... until next time... 
    f.close(); 
} 
関連する問題