-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>
すべてのヘルプは高く評価されます。
おそらくUACは、 'mshta.exe" your.hta "'を昇格された特権で実行します。 – Lankymart
あなたの時間はHTAから離れるのに費やされる方がよいでしょう。マイクロソフトは、これが「レガシー」技術であることを示しています。公式の言葉については、[this connect article](https://connect.microsoft.com/IE/feedback/details/785055/hta-application-tag-does-not-work-in-ie10)を参照してください。 –
私はHTAが従来の技術であると理解しています。残念ながら、それは私が現在取り組んでいることです。 – dEf