我的记忆棒上有一个文件(launch.vbs),它将 start.vbs (我记忆棒中的一个文件)复制到&#34; C:\ Docs \ < /强>&#34;什么时候跑。然后我想要 launch.vbs 在C盘中执行 start.vbs (即执行&#34; C:\ Docs \ start.vbs < / strong>&#34;)并且确实如此,但是 start.vb s里面有一行来创建一个txt(&#34; C:\ Docs \ output.txt &#34)。这条线是
SET creator = fso.CreateTextFile(CurrentDirectory & "\\output.txt",True)"
但是,当从 launch.vbs 启动 start.vbs 时,此行会显示错误代码800a0046(拒绝权限)。如果launch.vbs执行start.vbs,则在检查该位置的文件时,fso.FileExists函数也返回-1。我假设这是因为当我运行launch.vbs时,我只给它低级权限,因此start.vbs运行时具有阻止它编辑C驱动器的那些权限(但是这很奇怪,因为 launch.vbs < / strong>设法将 start.vbs 复制到C驱动器中。
作为旁注当我从C盘运行start.vbs时(即如果launch.vbs复制它然后我手动运行它)它工作正常,它只会在我尝试自动运行它时出错。所以要修复它我假设我需要运行具有更多权限的launch.vbs,但是有没有办法让它自动执行或甚至提示权限(我知道我可能会右键单击&gt;以管理员身份运行但我希望它更自动化)
我不希望弹出任何管理员提示,如果我尝试使用runas提升它,就会发生这种情况,请记住我不需要将第二个脚本提升为admin状态,只是与第一个脚本的状态相同。
答案 0 :(得分:0)
所以最后的错误是路径不正确,但它显示为错误的权限和错误消息是错误的权限所以我将留下问题标题,因为它是任何人有类似的问题。解决方案是改变这一行:
CurrentDirectory = fso.GetAbsolutePathName(".")
到这一行:
CurrentDirectory = WScript.ScriptFullName
我也改变了这个:
wshShell.Run("cmd /c C:\\Docs\\start.vbs", 0)
到此:
wshShell.Run("cmd /c CD C:\ & wscript C:\\Docs\\start.vbs", 0)
第二次更改是否具有效果idk。