我必须从一些传统的ASP应用程序运行命令行操作.
这是我的代码:
<%
cmd = "%comspec% /c echo Hello"
set wsh = CreateObject("WScript.Shell")
ireturn = wsh.Run(cmd, 0, true)
set wsh = nothing
%>
Run Code Online (Sandbox Code Playgroud)
这是我收到的结果:
Microsoft VBScript运行时错误"800a0046"
没有权限
/test.asp,第6行
您是否知道如何使IIS6运行此代码?
注意:当然我不必运行echo命令,但我想排除问题的任何其他原因.
更新:我尝试了大多数事情,但是没有任何帮助.也许我可以稍微改变一下问题.我该如何调试这个问题?
对象"MSXML2.ServerXMLHTTP.4.0"来自哪里?哪个安装包?
我正在尝试执行以下操作:
Set oXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.4.0")
Run Code Online (Sandbox Code Playgroud)
这个尝试在我的开发机器上失败(没有返回任何对象),但它在我的同事的开发机器上是成功的.显然,他安装的东西我没有,反之亦然,但是这个对象,dll等来自何处?
我需要安装什么才能使此调用工作?
对于记录,将对象更改为其他版本不是一种选择,因为此依赖的代码针对此特定版本进行了几天的测试.我们必须再回去测试......
要扩展此问题,如何判断当前安装的MS XML版本?
是否有可能VBScript在生成excel文件时在宏文件中编写一个只要文件打开就能运行的宏?
我有一个VBScript自动生成一个excel文件和其中的一些数据,这运行一次并生成包含所有数据/排序等的文件.
我需要的是在程序运行时有一些通常用宏运行的交互性,有人查看数据,这里的问题是因为它是一个自动生成的文件,没有保存宏.
如果是这样,将如何实现,以后如何在vbscript中写入一个宏?
我试图用VBScript中的C#编写一个方法.
我已经遵循了我在网上找到的所有说明,但仍然遇到问题.
具体来说,我得到了
错误:ActiveX组件无法创建对象
代码:800A01AD
到目前为止,我已经做了以下事情:
ComVisible(true) regasm /codebase 我的VBScript看起来像这样:
set oObject = CreateObject("TTTTTT.FFFFF.CCCCCCCCC")
Run Code Online (Sandbox Code Playgroud)
我的C#代码如下所示:
using System;
using System.IO;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace XXXXX.YYYYY
{
[ComVisible(true)]
[Guid("3EB62C37-79BC-44f7-AFBD-7B8113D1FD4F")]
[ProgId("TTTTTT.FFFFF.CCCCCCCCC")]
public class CCCCCCCCC
{
public void MyFunc()
{
//
}
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
是否可以从ac#应用程序执行vbs文件中的特定子?
我已经看过创建一个Process然后启动它但是找不到指定脚本文件中应该执行哪个特定子的方法.有没有办法指定这个或有更好的方法吗?
vbs可能看起来像下面的示例.我想要的是从C#代码启动test1或test2.
Public Sub test1
msgbox "Hey1"
End Sub
Public Sub test2
msgbox "Hey2"
End Sub
Run Code Online (Sandbox Code Playgroud) 在我的代码中我想使用if条件.我想在其中使用"OR"约18次.喜欢例如
If a="something" or a="something" or a="something" or.........(up to 18 times)... then
'do nothing
else
'do action
end if
Run Code Online (Sandbox Code Playgroud)
[注:值一个正在改变For循环每次],所以我只想问确实有使用或有限次,如果有任何的限制.或者还有其他更好的方法来做同样的事情.
谢谢
这是一个很好的疯狂发现:
Option Explicit
ExecuteGlobal "Option Explicit: Dim TestVar: TestVar=41"
ExecuteGlobal "Option Explicit: TestVar=42"
MsgBox "TestVar=" & CStr (TestVar)
Run Code Online (Sandbox Code Playgroud)
按预期工作 - 显示42.
和:
Option Explicit
ExecuteGlobal "Option Explicit: TestVar: TestVar=41"
MsgBox "TestVar=" & CStr (TestVar)
Run Code Online (Sandbox Code Playgroud)
由于未定义TestVar,因此在ExecuteGlobal调用中产生"未定义的变量".好.
我不明白的是:
Option Explicit
ExecuteGlobal "Option Explicit: Dim TestVar: TestVar=41"
ExecuteGlobal "Option Explicit: Dim TestVar: TestVar=42"
MsgBox "TestVar=" & CStr (TestVar)
Run Code Online (Sandbox Code Playgroud)
不会不扔在第二"标识符重新定义" ExecuteGlobal呼叫,但显示42 -如同Dim在第二ExecuteGlobal呼叫中不存在.
如果你对Class声明做同样的事情,一切正常,即你无法在任何情况下重新定义一个类.
我勒个去?
我的问题是:为什么ExecuteGlobal允许我重新定义一个全局变量,而a)ExecuteGlobal禁止访问未声明的变量,b)类定义被区别对待?
我确实有一个导致这种情况的用例(在测试运行时生成源代码并通过ExecuteGlobal执行它,因为某些不那么奇怪的因为你可能期望的原因),但我刚刚提出的要点是有效的,没有我认为现实世界的情景描述.
我使用QTP(HP QuickTest Professional)来解决这个问题,它使用VisualBasic脚本主机引擎进行脚本回放,但它只与VB脚本主机完全相同.
我写了下面的vbs打开ciphergraph:
Dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Run("""C:\Program Files (x86)\CipherGraph\LaunchStub.exe""")
Set objShell = Nothing
WScript.Sleep 250
Run Code Online (Sandbox Code Playgroud)
我还想在密码图窗口中选择"连接"按钮 - 我可以通过两次点击'TAB'然后在应用启动时'返回'来实现它
我该怎么做呢?对不起,如果这是一个基本问题,VBS新手,但找不到答案?
干杯
我已经成功使用清单文件(即早期绑定)使用C ++和C#成功运行了Reg-Free COM。我现在正尝试使用后期绑定使此工作正常。经过大量的网络搜索,我发现的技术似乎正在使用“ Microsoft.Windows.ActCtx”。
我用来测试此示例的示例是在http://msdn.microsoft.com/zh-cn/library/ms973913.aspx上找到的MS的“基于COM的组件的免注册激活”,以生成SideBySide示例。然后,我尝试使用脚本语言。但是,VBScript和Python都以相同的方式失败(也尝试过VBA)。下面给出了VBScript示例:
Set actctx = CreateObject("Microsoft.Windows.ActCtx")
actctx.manifest = "C:\test\client.exe.manifest"
Set SBSObj = actctx.CreateObject("SideBySide.SideBySideClass")
wscript.echo SBSObj.Version
Run Code Online (Sandbox Code Playgroud)
使用SysInternals的“ Process Monitor”之类的东西,您可以看到运行以下命令(Windows 7 x64):
C:\Windows\SysWOW64\cscript.exe //Nologo C:\test\VBRegFreeTest.vbs
Run Code Online (Sandbox Code Playgroud)
似乎可以通过加载清单来工作,并尝试开始寻找等效的注册表调用,但找不到它们。因此,它似乎部分起作用。我还将wScript.exe复制到本地目录中,以排除运行应用程序和清单文件的目录问题。
我已经阅读了Windows Xp上的Microsoft.Windows.ActCtx,并在清单中包含了“ prodID”,但仍然失败。清单文件可与C ++和C#示例一起正常使用。
我忍不住感觉到“ Microsoft.Windows.ActCtx”有问题。关于此的文档非常有限。非常感谢在Python或VBScript中使用清单文件的任何帮助。我想知道是否有人可以使用“ Microsoft.Windows.ActCtx”。
我目前正在尝试从R启动一个非常简单的VBA宏.为此,我遵循此处找到的过程:从R运行VBA脚本 不幸的是,当我打开Excel文件之后,它已损坏并且Excel停止.这是我的代码:
r:
library(XLConnect)
saveWorkbook(wb,pathfile)
# The saveWorkbook part is working
shell(shQuote(normalizePath(pathtovbs)), "cscript", flag = "//nologo")
Run Code Online (Sandbox Code Playgroud)
Option Explicit
On Error Resume Next
ExcelMacroExample
Sub ExcelMacroExample()
Dim xlApp
Dim xlBook
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(pathfile, 0, True)
xlApp.Run "PERSONAL.XLSB!MyMacro"
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)
vba PESONAL.XLSB!MyMacro:
Sub MyMacro()
Dim ws As Worksheet
For Each ws In Sheets
ws.Range("C:C").EntireColumn.Delete
ws.Range("A:A").EntireColumn.Delete
Next ws
End Sub
Run Code Online (Sandbox Code Playgroud)
你知道发生了什么吗?我检查了每个文件的路径,它们很好.非常感谢你提前.
编辑:显然,问题来自vbscript.该文件打开但无法找到位于我的个人库(PERSONAL.XLSB)中的宏.当我手动打开Excel时,我可以访问这个宏,但是当我从另一个程序打开Excel时,我不能.知道为什么吗?
宝莲