0

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

像这样,我们使用 Win+R 快捷方式的运行命令也是可执行文件吗?这是否可以作为可执行文件在 Windows 系统文件夹中的任何位置使用?

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

4

1 回答 1

3

不,它不是 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()

如果选项严格是“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}
于 2014-07-25T09:16:47.550 回答