我为我的游戏服务器制作了一个启动器。 (魔兽世界) 我想获得用户浏览的游戏的安装路径。 我正在使用此代码进行浏览,并获取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 请帮帮我。
答案 0 :(得分:1)
您可以调试并查看InstallPath包含的内容吗?
尝试使用Path.Combine而不是字符串连接,例如:
WowExe = Path.Combine(InstallPath, "wow.exe");
PatchPath = Path.Combine(InstallPath, @"\Data\");