注册问题

时间:2010-05-17 08:30:34

标签: c# string windows-7 registry

我为我的游戏服务器制作了一个启动器。 (魔兽世界) 我想获得用户浏览的游戏的安装路径。 我正在使用此代码进行浏览,并获取installpath,然后从installpath字符串中设置一些其他字符串,然后在我的注册表项中使用。

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,所以它原来反斜杠:S

看看这张照片:

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

我的程序在我的电脑和朋友的电脑上工作很酷,但在某些电脑上这个“错误”出现了:S 我有Windows 7,其中.NEt 3.5 请帮帮我。

1 个答案:

答案 0 :(得分:1)

您可以调试并查看InstallPath包含的内容吗?

尝试使用Path.Combine而不是字符串连接,例如:

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