如果连接了多个USB设备(至少一个包含密钥),下面的代码将返回false。.NET应用程序中的c#代码
我想让如果连接的USB设备中的一个具有关键的代码返回true,
List<DriveInfo> list = new List<DriveInfo>(DriveInfo.GetDrives());
foreach (DriveInfo drive in list)
{
if (drive.DriveType == DriveType.Removable)
{
if ((File.Exists(drive.RootDirectory + "Key.txt")) &&
File.Exists(drive.RootDirectory + "SerialNumber.txt"))
{
string KeyFromUsb = (System.IO.File.ReadAllText(drive.RootDirectory + "Key.txt"));
string serialusb = (System.IO.File.ReadAllText(drive.RootDirectory + "SerialNumber.txt"));
int serialNumbeFromUsb = Convert.ToInt32(serialusb);
string KeyFromDataBase = FoundKey(serialNumbeFromUsb);
if (KeyFromDataBase == KeyFromUsb)
{
ok = true;
}
else
{
return false;
}
}
}
}
只要您的条件不满意,代码总是返回false,但您没有返回true。也许修改'ok = true;'这行到'return true;'可以帮助吗? –
foreach循环退出一次在else语句中返回false。因此你是否连接了超过1个USB设备的问题。考虑设置一个“标志”,并将你的if语句移到foreach循环外的“flag” –