我的vbscript如何检测它是否在UAC高架环境中运行?
我没有问题检测用户,并查看用户是否在Administrators组中.但是,当在Vista或Windows 2008下运行时,这仍然无法解决该进程是否提升了私有性的问题.请注意,我只需要检测这种状态; 不要试图提升或(错误地)降低.
我希望看到一种使用VBScript读取和写入文本文件的简单方法.
我认为这是一种可以接受的写入文件的方法.
Dim f,
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateTextFile("C:\test.txt", True, True)
f.WriteLine("Data to Add to file.")
f.Close
Run Code Online (Sandbox Code Playgroud)
但是,我想知道如何以类似的方式从文件中读取.
编辑:等了一会儿后还没有得到任何东西,我决定现在只为IE做快捷禁用.是否有可能通过vbscript禁用IE快捷键来访问菜单/打印等?
是否可以禁用浏览器快捷键?
因为他们中的许多人正在申请中使用.例如,Ctrl+ p正在使用,我不希望浏览器弹出打印窗口.
我需要从使用Visual Studio 2008部署项目创建的安装程序中的VBScript中读取Temporary ASP.NET Files文件夹的位置,作为安装后任务的一部分.
我以为我会这样做:
Set oShell = CreateObject("Wscript.Shell")
strPath = oShell.RegRead("HKLM\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0\Path")
Run Code Online (Sandbox Code Playgroud)
然后将strPath与"\ Temporary ASP.NET Files"连接起来并完成它.
但是,在x64系统上,我从WOW6432Node(HKLM\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\2.0.50727.0)获取值,它为我提供了32位框架路径(C:\ Windows\Microsoft. NET\Framework\v2.0.50727),但在x64系统上,我实际上需要64位路径,即C:\ Windows\Microsoft.NET\Framework64\v2.0.50727.
我知道这是因为.vbs文件是使用32位脚本主机运行的,因为父进程(安装程序)本身就是32位.
如何使用64位脚本主机运行脚本 - 或者 - 即使脚本使用32位脚本主机运行,如何读取64位值?
我在网上找不到太多文档
到目前为止,显而易见的差异似乎是你不能使用"script"标签混合html和vbscript
例如,这没关系
<% public sub display_literal() %> literal <% end sub %>
但是你应该使用脚本标签
<script language="vbscript" runat="server">
public sub display_literal2()
response.write "literal2</br>"
end sub
</script>
在本页面
http://www.newobjects.com/pages/ndl/alp/asp-structure.htm
它说
在经典ASP中,以页面的默认脚本语言(即<%%>标签所假定的语言)编写的脚本被执行第二 - 例如,<%%>标签中的所有脚本代码在所有<SCRIPT RUNAT之后被初始化= SERVER ...>脚本.
但我做了几个测试,无法验证它......
我问,因为我有一个脚本(我现在没有它),使用<%%>给了我一个错误,将其更改为<script>标签解决了问题,但我想知道为什么....
无论如何,我想我们应该使用<script>标签来处理从<%%>标签调用的函数和程序......对吗?
我在VBScript中有以下代码:
Dim control
set control = CreateObject("MSScriptControl.ScriptControl")
control.language = "jscript"
control.addCode("function test() { return {property: 'test'}; };")
Dim result
set result = control.Eval("test();")
Run Code Online (Sandbox Code Playgroud)
我知道返回的对象result属于该类型JScriptTypeInfo但我无法找到有关此类型定义的任何信息,并且在Visual Studio C#中执行类似的代码仅{System.__ComObject}在本地窗格中显示此内容.
有谁知道该JScriptTypeInfo类型的接口是什么?
我使用VS 2008和Windows 7.
获得了一个.NET C#类,它作为COM对象公开.
[Guid("E5014B85-FCB2-4F0D-95EC-F741395A7923")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface DSystem
{
[DispId(1610809354)]
void setProperties(IDictionary propertymap);
}
Run Code Online (Sandbox Code Playgroud)
从VBScript调用COM对象
dim dSystem
set dSystem = CreateObject("MYCOMOBJECT")
Dim objDictionary
Set objDictionary = CreateObject("System.Collections.Hashtable")
objDictionary.Add "PROP1", "abc"
objDictionary.Add "PROP2", "zyx"
dSystem.setProperties(objDictionary)
Run Code Online (Sandbox Code Playgroud)
一切正常......但是,返回类型从改变void为bool
[DispId(1610809354)]
bool setProperties(IDictionary propertymap);
Run Code Online (Sandbox Code Playgroud)
和
success = dSystem.setProperties(objDictionary)
Run Code Online (Sandbox Code Playgroud)
导致错误
Microsoft VBScript运行时错误"800a0005"
无效的过程调用或参数
.tlb文件似乎没问题
[id(0x6003000a)]
HRESULT setProperties(
[in] IDictionary* propertymap,
[out, retval] VARIANT_BOOL* pRetVal);
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
任何人都可以给我一个提示吗?
我想从命令行运行一个vbs命令,就像批量调用一样
cmd.exe /c "echo.Hello World! & pause"
Run Code Online (Sandbox Code Playgroud)
显然这不起作用
wscript /C MsgBox("Hello world")
Run Code Online (Sandbox Code Playgroud)
我可以打印vbs然后调用临时文件然后删除它
cmd.exe /c "echo. [VBSCODE] > temp.vbs & wscript temp.vbs & del temp.vbs"
Run Code Online (Sandbox Code Playgroud)
但这太乱了,我不希望弹出提示.
我想知道在VBScript中我是否可以在多行中打破IF语句.喜欢 -
If (UCase(Trim(objSheet.Cells(i, a).Value)) = "YES") Or _
(UCase(Trim(objSheet.Cells(i, b).Value)) = "NO") Then
' Do something
End If
Run Code Online (Sandbox Code Playgroud)
我尝试了这个并得到一个语法错误,因为在同一行If期望If:(
有没有人知道如何以编程方式按键,就像在键盘上按下键一样?PostMessage失败,SendInput失败,keybd_event失败,SendMessage失败,我甚至尝试使用Vcl.Touch.Keyboard模仿按键的不寻常方式.我甚至写了一个快速的vb脚本文件调用sendkeys也失败了.我在一个名为Sellerdeck http://www.sellerdeck.com/的程序中尝试这样做时遇到了麻烦
我已经尝试了以下所有内容,它们都与记事本配合使用,但在此程序中失败了.窗口成功地被带到了forground
procedure bringToForegroung;
Var
findhandle1 : cardinal;
begin
findhandle1 := FindWindow(NIL, 'Business Plus - Test site: Online Catalogue');
ShowWindow(findhandle1,SW_SHOW);
SetForegroundWindow(findhandle1);
end;
Run Code Online (Sandbox Code Playgroud)
procedure SendF10;
Var
findhandle1 : cardinal;
begin
findhandle1 := FindWindow(NIL, 'Business Plus - Test site: Online Catalogue');
ShowWindow(findhandle1,SW_SHOW);
SetForegroundWindow(findhandle1);
PostMessage(findhandle1, WM_KEYDOWN, VK_F10, 0);
PostMessage(findhandle1, WM_KEYUP, VK_F10, 0);
end;
Run Code Online (Sandbox Code Playgroud)
procedure SendAltF;
var
KeyInputs: array of TInput;
//--------------------------------------------
procedure KeybdInput(VKey: Byte; Flags: DWORD);
begin
SetLength(KeyInputs, Length(KeyInputs)+1);
KeyInputs[high(KeyInputs)].Itype := INPUT_KEYBOARD;
with KeyInputs[high(KeyInputs)].ki do
begin
wVk := VKey; …Run Code Online (Sandbox Code Playgroud) vbscript ×10
javascript ×2
64-bit ×1
activex ×1
asp-classic ×1
batch-file ×1
c# ×1
com ×1
command-line ×1
delphi ×1
excel ×1
excel-vba ×1
interop ×1
registry ×1
runatserver ×1
scripting ×1
uac ×1
vb6 ×1
vba ×1
windows ×1
wsh ×1