为什么这个过程没有开始?

Hel*_*all 0 vb.net process

我正在尝试启动Store.Client.UI.exe进程,该进程位于:"C:\ Program Files\Intel\IntelAppStore\bin\Store.Client.UI.exe"或"C:\ Program Files"( x86)\ Intel\IntelAppStore\bin\Store.Client.UI.exe"对于像我这样的64位,所以我使用代码:

    If My.Settings.instpathtype = 86 Then
        Process.Start("C:\Program Files\Intel\IntelAppStore\bin\Store.Client.UI.exe")
    Else
        Process.Start("C:\Program Files (x86)\Intel\IntelAppStore\bin\Store.Client.UI.exe")
    End If
Run Code Online (Sandbox Code Playgroud)

my.settings.instpathtype的位置是计算机是64位还是32位.但是当我运行它时,由于某种原因它不会运行Store.Client.UI.exe.当我进入资源管理器并键入"C:\ Program Files(x86)\ Intel\IntelAppStore\bin\Store.Client.UI.exe"时,它运行Store.Client.UI.exe.怎么了?

Cod*_*ray 5

从您发布的代码中,我不知道您获取值的位置和方式instpathtype,或者声明的类型.

但无论如何,你真的不应该这样做.如果您希望代码"正常工作",那么硬编码文件系统的路径是一种非常糟糕的做法.您在上面发布的内容不仅会因操作系统的位数而中断,还会在用户重命名或移动其Program Files文件夹时中断.如果我的启动驱动器是E:,您的代码也将在我的计算机上失败.

相反,您应该使用特殊的系统文件夹.这样,您甚至无需检查是否在32位或64位操作系统上运行..NET Framework提供了一种非常简单的方法,可以使用该Environment.GetFolderPath方法获取这些值,并指定要检索的文件夹类型.

在这种情况下,无论主机操作系统的位数如何,您都需要32位Program Files文件夹,因此您可以使用该ProgramFilesX86值来检索相应的文件夹,如下所示:

Process.Start(System.Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86) & "\\Intel\\IntelAppStore\\bin\\Store.Client.UI.exe")
Run Code Online (Sandbox Code Playgroud)