我正在尝试启动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.怎么了?
从您发布的代码中,我不知道您获取值的位置和方式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)