【问题标题】:Is Run command in Windows executable file?Windows 可执行文件中是否有运行命令?
【发布时间】:2014-09-16 21:58:41
【问题描述】:

我突然想到一件事,大多数win应用程序,如windwos版本(winver)、calc等都是可执行文件,它们将存在于Windows或System32文件夹中。

这样,我们使用Win+R快捷键的Run Command也是可执行文件吗?这在 Windows 系统文件夹的任何地方都可以作为可执行文件吗?

当我尝试单击打开文件位置时,它正在打开桌面。实际上当我们点击快捷方式时它是从哪里开始的?

【问题讨论】:

标签: windows runcommand


【解决方案1】:

不,它不是 exe,它是你在动态链接库 C:\Windows\System32\shell32.dll 中找到的 shell 对话窗口

您可以像这样从 VBScript 调用它:

 dim objShell
 set objShell = CreateObject("shell.application")
 objShell.FileRun

像这样来自 JScript:

var objShell = new ActiveXObject("shell.application");
objShell.FileRun();

像这样从 VB6 开始:

Private Sub fnShellFileRunVB()
    Dim objShell As Shell

    Set objShell = New Shell
    objShell.FileRun

    Set objShell = Nothing
End Sub

使用现代 VB.NET,这变成:

Dim t2 As Type = Type.GetTypeFromProgID("Shell.Application")
Dim obj2 = Activator.CreateInstance(t2) ' dynamic 
obj2.FileRun()

如果选项 strict 为“ON”,那么要走的路是这样的:

Dim t As Type = Type.GetTypeFromProgID("Shell.Application")
Dim obj As Object = Activator.CreateInstance(t)
t.InvokeMember("FileRun", System.Reflection.BindingFlags.InvokeMethod, Nothing, obj, Nothing)

C# 变体:

Type t = Type.GetTypeFromProgID("Shell.Application");
object obj = Activator.CreateInstance(t);
t.InvokeMember("FileRun", System.Reflection.BindingFlags.InvokeMethod, null, obj, null);


//If the C # 4.0, the Dynamic Lookup presence of, it can be:
Type t2 = Type.GetTypeFromProgID("Shell.Application");
dynamic obj2 = Activator.CreateInstance(t2);
obj2.FileRun();

但如果您愿意,也可以从批处理文件中调用它:

C:\WINDOWS\system32\rundll32.exe shell32.dll,#61

或通过 Explorer 命令行:

explorer.exe Shell:::{2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}

【讨论】:

    猜你喜欢
    • 2016-12-20
    • 2013-04-21
    • 2012-09-21
    • 1970-01-01
    • 2017-01-17
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多