vbscript 运行 具有权限的第二个脚本
vbscript run second script with permissions
我的记忆棒上有一个文件 (launch.vbs),它将 start.vbs(我记忆棒中的一个文件)复制到“C:\Docs\" 当 运行。然后我希望 launch.vbs 在 C 驱动器中执行 start.vbs (即执行“ C:\Docs\start.vbs") 它会这样做,但是 start.vbs 里面有一行来创建一个 txt ("C:\Docs\output.txt").该行是
SET creator = fso.CreateTextFile(CurrentDirectory & "\output.txt",True)"
然而,当从 launch.vbs 启动 start.vbs 时,这一行给我错误代码 800a0046(权限被拒绝).如果 launch.vbs 执行 start.vbs,则 fso.FileExists 函数在检查该位置的文件时也会 returns -1。我认为这是因为当我 运行 launch.vbs 时我只给它低级权限所以 start.vbs 是 运行 具有阻止它编辑 C 驱动器的权限(然而,这很奇怪,因为 launch.vbs 成功地将 start.vbs 复制到 C 盘。
作为旁注,当我从 C 驱动器 运行 start.vbs 时(即如果 launch.vbs 复制它然后我手动 运行 它)它工作正常,它只会在我尝试自动 运行 时出错。因此,要修复它,我假设我需要 运行 launch.vbs 具有更多权限,但是有没有办法让它自动执行此操作甚至提示权限(我知道我可能可以右键单击>运行 作为管理员,但我希望它能更加自动化)
我不希望弹出任何管理员提示,如果我尝试使用 运行as 提升它,就会发生这种情况,记住我不需要将第二个脚本提升到管理员状态,只是相同的状态作为第一个脚本。
所以最后的错误是路径不正确,但它显示为错误的权限,错误消息是错误的权限所以我将保留问题标题,因为它是因为任何人都有类似的问题。解决方案是更改此行:
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)
第二个更改是否有影响我知道。
我的记忆棒上有一个文件 (launch.vbs),它将 start.vbs(我记忆棒中的一个文件)复制到“C:\Docs\" 当 运行。然后我希望 launch.vbs 在 C 驱动器中执行 start.vbs (即执行“ C:\Docs\start.vbs") 它会这样做,但是 start.vbs 里面有一行来创建一个 txt ("C:\Docs\output.txt").该行是
SET creator = fso.CreateTextFile(CurrentDirectory & "\output.txt",True)"
然而,当从 launch.vbs 启动 start.vbs 时,这一行给我错误代码 800a0046(权限被拒绝).如果 launch.vbs 执行 start.vbs,则 fso.FileExists 函数在检查该位置的文件时也会 returns -1。我认为这是因为当我 运行 launch.vbs 时我只给它低级权限所以 start.vbs 是 运行 具有阻止它编辑 C 驱动器的权限(然而,这很奇怪,因为 launch.vbs 成功地将 start.vbs 复制到 C 盘。
作为旁注,当我从 C 驱动器 运行 start.vbs 时(即如果 launch.vbs 复制它然后我手动 运行 它)它工作正常,它只会在我尝试自动 运行 时出错。因此,要修复它,我假设我需要 运行 launch.vbs 具有更多权限,但是有没有办法让它自动执行此操作甚至提示权限(我知道我可能可以右键单击>运行 作为管理员,但我希望它能更加自动化)
我不希望弹出任何管理员提示,如果我尝试使用 运行as 提升它,就会发生这种情况,记住我不需要将第二个脚本提升到管理员状态,只是相同的状态作为第一个脚本。
所以最后的错误是路径不正确,但它显示为错误的权限,错误消息是错误的权限所以我将保留问题标题,因为它是因为任何人都有类似的问题。解决方案是更改此行:
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)
第二个更改是否有影响我知道。