2010-11-21 11 views
0

「C:¥Program Files¥Intel¥IntelAppStore¥bin¥Store.Client.UI.exe」または「C:\ Program」にあるStore.Client.UI.exeプロセスを開始しようとしています。ファイルの私のような64ビットのため(のx86)\インテル\ IntelAppStore \ binに\ Store.Client.UI.exe」ので、私はコードを使用しますmy.settings.instpathtypeは、コンピュータが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 

を32ビット。しかし、私が実行すると何らかの理由でStore.Client.UI.exeが実行されません。エクスプローラに入り、「C:¥Program Files(x86)¥Intel¥IntelAppStore¥bin¥Store.Client.UI.exe」と入力すると、Store.Client.UI.exeが実行されます。どうしましたか?

+1

デフォルトでは、VB.NET&C#IDEが.exeの年代(64ビットまたは「どれCPU」とは反対に)のために32ビットにかかわらず、開発マシンの対象とすることに注意してください。これはあなたの "instpathtype"設定計算をオフにするかもしれません。これはプロジェクト設定メニューで変更できます。 – Inisheer

答えて

0

このような問題が発生した場合は、デバッグが行われます。My.Settings.instpathtypeが出力するものを表示してみてください。単純なMessageBoxまたはそれに類するものです。テストマシンが32ビットで、出力が86と異なる場合は、変更してください。

EDIT:64ビットマシンがあると思いますか?それ以外の方法で試してみてください。ステートメントをIfElseの下に置き換え、My.Settings.instpathtypeの出力を条件に入れてください。

EDIT:条件にエラーがない場合\は、エスケープ文字として読まれているので、それはあるかもしれません。その前に別の\を追加して修正できます。あなたが投稿コードから

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 
5

、私はあなたがinstpathtypeの値を取得している場所/方法、またはそれは次のように宣言されているどのタイプか分かりません。

しかし、これに関係なく、あなたは本当にこのようにするべきではありません。 ファイルシステムへのハードコーディングパスは、コードを「ただの作業」にしたい場合はvery bad practiceです。あなたが上に投稿した内容は、OSのビット数に依存するだけでなく、ユーザーがProgram Filesフォルダの名前を変更したり移動したりした場合にも破損する可能性があります。私のブートドライブがE:の場合、コンピュータ上のコードも失敗します。

代わりに、特別なシステムフォルダを使用する必要があります。このようにして、32ビットまたは64ビットのオペレーティングシステムで実行しているかどうかを確認する必要はありません。 .NET Frameworkでは、Environment.GetFolderPath methodでこれらの値を取得し、取得するフォルダのtypeを指定するという簡単な方法が提供されています。この場合

あなたがそうのように、適切なフォルダを取得するためにProgramFilesX86値を使用することができますので、あなたは関係なく、ホストOSのbit化の、32ビットProgram Filesフォルダをしたい:

Process.Start(System.Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86) & "\\Intel\\IntelAppStore\\bin\\Store.Client.UI.exe") 
0

プロセスが開始してからすぐにエラーを出して終了する可能性があります。 Process.Startからの戻りプロセスを使用し、proc.exitcode、proc.starttime、およびproc.exittimeなどのプロパティの一部を確認します。

dim proc as process 
... 
proc = Process.Start("C:\\Program Files\\Intel\\IntelAppStore\\bin\\Store.Client.UI.exe") 
関連する問題