2010-05-17 182 views
1

我爲我的遊戲服務器製作了一個啓動器。 (魔獸世界) 我想獲得用戶瀏覽的遊戲的安裝路徑。 我正在使用此代碼瀏覽並獲取installpath,然後從installpath字符串中設置一些其他字符串,然後在我的註冊表項中執行strore操作。註冊表問題

using System; 
using System.Drawing; 
using System.Reflection; 
using System.Collections; 
using System.ComponentModel; 
using System.Windows.Forms; 
using System.Data; 
using Microsoft.Win32; 
using System.IO; 
using System.Net.NetworkInformation; 
using System.Diagnostics; 
using System.Runtime; 
using System.Runtime.InteropServices; 
using System.Security; 
using System.Security.Cryptography; 
using System.Text; 
using System.Net; 
using System.Linq; 
using System.Net.Sockets; 
using System.Collections.Generic; 
using System.Threading; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     string InstallPath, WoWExe, PatchPath; 
     private void Form1_Load(object sender, EventArgs e) 
     { 

      RegistryKey LocalMachineKey_Existence; 
      MessageBox.Show("Browse your install location.", "Select Wow.exe"); 
      OpenFileDialog BrowseInstallPath = new OpenFileDialog(); 
      BrowseInstallPath.Filter = "wow.exe|*.exe"; 
      if (BrowseInstallPath.ShowDialog() == DialogResult.OK) 
      { 
       InstallPath = System.IO.Path.GetDirectoryName(BrowseInstallPath.FileName); 
       WoWExe = InstallPath + "\\wow.exe"; 
       PatchPath = InstallPath + "\\Data\\"; 

       LocalMachineKey_Existence = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\ExistenceWoW"); 
       LocalMachineKey_Existence.SetValue("InstallPathLocation", InstallPath); 
       LocalMachineKey_Existence.SetValue("PatchPathLocation", PatchPath); 
       LocalMachineKey_Existence.SetValue("WoWExeLocation", WoWExe); 
      } 
     } 
    } 
} 

的問題是: 在某些計算機,它不商店像它應該是。例如,您的wow.exe位於C:\ ASD \ wow.exe中,您將其選擇爲瀏覽窗口,然後該程序應將其存儲在Existence註冊表項中作爲C:\ ASD \ Data \,但它以這種方式存儲: C:\ ASDData,所以它forgots反斜線:S

看看這張圖:

http://img21.imageshack.us/img21/2829/regedita.jpg

我的程序工作在我的電腦上的冷靜,和我的朋友的電腦,但一些PC這個「bug」出來:S 我有Windows 7,與.NEt 3.5 請幫助我。

+0

不知道嘗試,如果能解決你的問題,但使用'IO.Path.Combine'而不僅僅是添加路徑共同建議。 – 2010-05-17 08:37:02

回答

1

您可以調試並查看InstallPath包含的內容嗎?

與Path.Combine而不是字符串連接,例如:

WowExe = Path.Combine(InstallPath, "wow.exe"); 
PatchPath = Path.Combine(InstallPath, @"\Data\");