超难有关问题,怎么 根据 盘符 判断 是不是 win10不显示u盘盘符

超难有关问题! 怎么 根据 盘符 判断 是不是 U盘 ? 急 - Delphi当前位置:& &&&超难有关问题! 怎么 根据 盘符 判断 是不是 U盘 ? 急超难有关问题! 怎么 根据 盘符 判断 是不是 U盘 ? 急&&网友分享于:&&浏览:50次超难问题!!!!! 如何 根据 盘符 判断 是不是 U盘 ??????????????? 急!!!!!!!!!!!!!!!!!!注意不能用 & GetDriveType & 判断 & , & 因为 & GetDriveType & 对某些U盘 & 判断为 & 固定的磁盘!!!!!!!!!
请给出详细 & 的代码 & 谢谢!!!!!!!!!!!!!!!!!!!!! ------解决方案--------------------用WMI肯定可以(WMI可得到系统所有信息),以下为例程(当然你可以通过Win32_USBControllerDevice或其它项目来判):
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdC
TForm1 = class(TForm)
Button1: TB
procedure Button1Click(Sender: TObject);
{ Private declarations }
{ Public declarations }
Form1: TForm1;
implementation
{$R *.dfm}
ActiveX, WbemScripting_TLB;
function ADsEnumerateNext(pEnumVariant: IEnumVARIANT; cElements: ULONG;
var pvar: OleVARIANT; var pcElementsFetched: ULONG): HRESULT; external
'activeds.dll ';
procedure DumpWMI_Process(Process: SWBemObject);
Enum: IEnumVARIANT;
varArr: OleV
lNumElements: UL
SProp: ISWbemP
Prop: OleV
PropValue:
Form1.Memo1.Lines.Add( '+ WMI Path:
' + Process.Path_.Path);
Enum := Process.Properties_._NewEnum as IEnumV
while (Succeeded(ADsEnumerateNext(Enum, 1, VarArr, lNumElements))) and
(lNumElements &
if Succeeded(IDispatch(varArr).QueryInterface(SWBemProperty, SProp)) and
Assigned(SProp) then
:= SProp.N
Prop := SProp.Get_V
PropType := inttostr((VarType(Prop)));
PropValue := VarToStr(Prop);
Form1.Memo1.Lines.Add( '
' + PropName +
'[ ' + PropType +
' + PropValue);
on E: Exception do
// WriteLn(ErrOutput, PropName,
', E.Message);
procedure TForm1.Button1Click(Sender: TObject);
Enum: IEnumVARIANT;
varArr: OleV
lNumElements: UL
AName: array[0..255] of C
ASize: DWORD;
if (ParamCount = 0) then
' ';
:= SizeOf(AName) - 1;
if GetComputerName(@AName, ASize) then Server := AN
Server := ParamStr(1);
Memo1.Lines.BeginU
Enum := CoSWbemLocator.Create.ConnectServer(Server,
'root\cimv2 ',
' ',
' ',
' ',
' ', 0, nil).ExecQuery( 'Select
InterfaceType from Win32_DiskDrive ',
'WQL ',
wbemFlagBidirectional, nil)._NewEnum as IEnumV
while (Succeeded(ADsEnumerateNext(Enum, 1, varArr, lNumElements))) and
(lNumElements &
DumpWMI_Process(IUnknown(varArr) as SWBemObject);
Memo1.Lines.EndU
////其中,WbemScripting_TLB.pas可从
///http://www.truth4all.org/WbemScripting_TLB.pas
------解决方案--------------------InterfaceType[8] = USB
------解决方案-------------------- 共&2&页:
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有您所在的位置:
> u盘不显示盘符怎么办?
前段时间入手一个金士顿 DT101 G2 。 由于手贱,把它給量产了!...
不知道我的U盘是怎么回事,在我自己的电脑里读不出来,下面有...
据U盘量产网调查,淘宝上有大量廉价U盘均为山寨读卡器+tf卡做...
现在购买的U盘,价格便宜,种类多,但是质量也比较差,很多...
现在每个人手中的移动存储设备是越来越多了,MP3/MP4播放器、闪...
最近一朋友去电脑城买了个16G的U盘,电脑上用360的U盘鉴定器一...
经常有朋友在使用U盘中遇到忽然就写保护了,u盘无法格式化了...
有朋友遇到U盘突然电脑不识别了,直接不显示,插入U盘电脑什...
前几天看见公司的文员MM拿着个卡通U盘,就问她在哪里买的,答...
我发现很多人跟我遇到一样的问题,使用了闪迪的8gU盘一个不小...
u盘不显示盘符怎么办?
&&& 有朋友遇到U盘突然电脑不识别了,直接不显示,插入U盘电脑什么都没反应,心拔凉拔凉的,不知道怎么办,其实这时候你应该注意两种情况,第一个是你插入U盘电脑是否有发现新硬件的提示,或者电脑是否有叮咚的声音提示插入设备了,如果有表示你的U盘还有救,如果没有你就要排除一下是不是你这台电脑的问题,换一台电脑试试,如果还是一样,那你可以换U盘了。
&&& 下面以U盘插到电脑后还有反应但没有显示为例说说简单的解决办法:
方法一:右击&计算机&,从弹出的菜单中选择&管理&项。
在打开的&计算机管理&窗口中,展开&存储&-&&磁盘管理&项。
右击无法正常显示的U盘盘符,选择&更改驱动器和路径&项。
然后为当前U盘分配一个未占用的盘符即可。
方法二:我们也可以通过修改注册表来让U盘盘符显示出来。
打开&运行&对话框,输入&regedit&进入注册表程序。
依次展开&HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer&,将&Nodrives&键值删除掉。
方法三:还有一种非常简单的实现方法,就是利用&USB监控软件&来让U盘盘符起死回生。需要的朋友可以直接点这来获得&&下载。
运行该软件,勾选&禁用USB存储设备&项。
接下来再次勾选&启用USB存储设备&项,即可让U盘盘符得以显示。
方法四:如果上面的方法都不行,这是最有希望的方法了,那就是量产修复法
&&& 大概流程就是先插入U盘然后下载chipgenius检测U盘主控是什么,比如chipgenius显示主控是安国的
&&&& 如上图,是安国AU6983或者AU6986主控的,那就到本站量产工具目录下载对应版本安国AU6983、AU6986量产工具,这个怎么选择版本呢?下载最新的,多试试即可,选择好量产工具,在本站搜索这个工具的量产教程比着做就能修复你的U盘了。
&&&& 当然既然选择到这种方式了说明你的U盘已经坏了,里面的数据肯定是没戏了,或者你也可以在量产前用本站的U盘数据恢复软件先恢复看看,恢复后再选择量产工具量产修复即可。。
好评度:(34)97.1%
差评度:(1)2.9%
(您的评论需要经过审核才能显示)
匿名? 不会下载请看!
声明:U盘量产网为非赢利类网站 蜀ICP备号 川公网安备 94号C/C++(135)
使用WIN API函数实现
#include &iostream&
#include &vector&
#include &string&
#include &Windows.h&
#include &atlstr.h&
#define MAX_DRIVER_STRING_LENGHT MAX_PATH
void getVidPid(wchar_t volNum)
wchar_t szDrvName[] = L&\\\\.\\A:&;
szDrvName[4] = volN
HANDLE hDevice = NULL;
hDevice = CreateFile(szDrvName, GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);
catch (...)
//创建设备文件失败CloseHandle(hDevice);
PSTORAGE_DEVICE_DESCRIPTOR pDevD
STORAGE_PROPERTY_QUERY Q
DWORD dwOutBytes = 0;
pDevDesc = (PSTORAGE_DEVICE_DESCRIPTOR)new BYTE[sizeof(STORAGE_DEVICE_DESCRIPTOR) + 512 - 1];
pDevDesc-&Size = sizeof(STORAGE_DEVICE_DESCRIPTOR) + 512 - 1;
char buffer [1000] = {0};
memset ((void *) & Query, 0, sizeof (Query));
memset (buffer, 0, sizeof (buffer));
Query.PropertyId = StorageDeviceP
Query.QueryType = PropertyStandardQ
char* vid = NULL, *pid = NULL;
if ( DeviceIoControl (hDevice, IOCTL_STORAGE_QUERY_PROPERTY,
sizeof (Query),
sizeof (buffer),
& dwOutBytes, NULL) )
STORAGE_DEVICE_DESCRIPTOR * descrip = (STORAGE_DEVICE_DESCRIPTOR *)
if(descrip -& VendorIdOffset)
vid = &buffer [descrip -& VendorIdOffset];
if(buffer [descrip -& ProductIdOffset])
&buffer [descrip -& ProductIdOffset];
bResult = ::DeviceIoControl(hDevice,
IOCTL_STORAGE_QUERY_PROPERTY,
&Query, sizeof(STORAGE_PROPERTY_QUERY),
pDevDesc, pDevDesc-&Size,
&dwOutBytes,
(LPOVERLAPPED)NULL);
catch (...)
//MessageBox(NULL, &获取信息失败&, &错误&, MB_OK | MB_ICONERROR);
if(bResult)
unsigned char *p = NULL;
p = (unsigned char*)pDevD
//BYTE *vID1 = (BYTE*)(pDevDesc+(*pDevDesc).VendorIdOffset);
unsigned char *vID = &p[pDevDesc-&VendorIdOffset];
cout&&vID&&
unsigned char *pID = &p[pDevDesc-&ProductIdOffset];
cout&&pID&&
//strcpy(GetUSBInfo-&U_PROD,&p[pDevDesc-&ProductIdOffset]);//此即为producter
//strcpy(GetUSBInfo-&U_REV,&p[pDevDesc-&ProductRevisionOffset]);//此即为version
//strcpy(GetUSBInfo-&U_VEN ,&p[pDevDesc-&VendorIdOffset]);//此即为vendor
//MessageBox(NULL, &获取信息失败&, &错误&, MB_OK | MB_ICONERROR);
int GetUsbDevice(vector&wstring&& strUsbDriverName)
wchar_t lpBuffer[MAX_DRIVER_STRING_LENGHT] = {0};
wchar_t* lpSingleDevice = NULL;
DWORD nBufferLength = MAX_DRIVER_STRING_LENGHT;
DWORD dwSignleDeviceBufferIndex =0, dwDeviceNum =0;
lpSingleDevice
= (wchar_t*)malloc(sizeof(wchar_t)* MAX_DRIVER_STRING_LENGHT);
if(lpSingleDevice == NULL)
cout&&&系统分配内存错误&&&
memset(lpSingleDevice,0x0,MAX_DRIVER_STRING_LENGHT*2);
//memset(lpBuffer,0x0,MAX_DRIVER_STRING_LENGHT);
nBufferLength = GetLogicalDriveStrings(nBufferLength,lpBuffer); //列举盘符
for(DWORD i =0; i& nBufferL i++)
if(lpBuffer[i] != 0x00)
//分离各个离盘符
lpSingleDevice[dwSignleDeviceBufferIndex] = lpBuffer[i];
dwSignleDeviceBufferIndex++;
lpSingleDevice[dwSignleDeviceBufferIndex]
dwSignleDeviceBufferIndex = 0;
if(*lpSingleDevice == L'A')
//A盘 不需要
UINT flag = GetDriveType(lpSingleDevice);
if(flag == DRIVE_REMOVABLE)
//获取移动磁盘
strUsbDriverName.push_back(lpSingleDevice);
//strUsbDriverName[dwDeviceNum] = lpSingleD
wcout&&L&DRIVE_REMOVABLE = &&&lpSingleDevice&&
dwDeviceNum++;
getVidPid(*lpSingleDevice);
else if(flag == DRIVE_REMOTE)
strUsbDriverName.push_back(lpSingleDevice);
//strUsbDriverName[dwDeviceNum] = lpSingleD
wcout&&L&DRIVE_REMOTE = &&&lpSingleDevice&&
dwDeviceNum++;
else if(flag == DRIVE_CDROM)
strUsbDriverName.push_back(lpSingleDevice);
//strUsbDriverName[dwDeviceNum] = lpSingleD
wcout&&&DRIVE_CDROM = &&&lpSingleDevice&&
dwDeviceNum++;
free(lpSingleDevice);
lpSingleDevice = NULL;
return dwDeviceN
#include &boost/filesystem.hpp&
int main()
/*string from(&F:/SVN提交模板.txt&);
string to(&\\\\192.190.20.200\\工具\\SVN提交模板.txt&);
boost::filesystem::copy_file(from, to, boost::filesystem::copy_option::overwrite_if_exists);
catch (const std::exception &ex)
cout&&&error = &&&ex.what()&&
vector&wstring& strUsbDriverName, strCdRomDriverName, strRemoteDriverN
int deviceNum = 0;
deviceNum = GetUsbDevice(strUsbDriverName);
cout&&&deviceNum = &&&deviceNum&&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:177168次
积分:2733
积分:2733
排名:第10232名
原创:40篇
转载:375篇
(1)(1)(4)(2)(1)(1)(3)(4)(6)(10)(10)(11)(1)(4)(14)(11)(11)(11)(16)(6)(8)(6)(24)(8)(19)(21)(17)(18)(27)(29)(24)(11)(5)(12)(52)(8)u盘分区后磁盘没有盘符是怎么回事_老毛桃
当前位置: >
> u盘分区后磁盘没有盘符是怎么回事
u盘分区后磁盘没有盘符是怎么回事
来源:www.laomaotao.org
  有网友用老毛桃u盘工具DiskGenius分完区后,在磁盘管理器中没有看到磁盘,再打开DiskGenius虽然可以看到分区但磁盘分区没有盘符。是什么原因导致分区后没有盘符呢?
  可能有用户会猜测磁盘分区盘符是不是被隐藏起来了,当然有这种可能,但依据小编的经验判断,应该是DiskGenius尚未完成分区用户提前关闭了工具窗口,具体情况如下图所示:
  其实,只要稍微等待一会,DiskGenius分配完盘符,显示在列表中后再关闭就不会出现磁盘分区没有盘符的情况了,如下图所示:
  受此问题困扰的朋友这时应该恍然大悟了吧,原来是这样啊!OK,u盘分区后磁盘没有盘符的原因和解决办法今天就学习到这,有兴趣的朋友可以关注老毛桃其他内容。
责任编辑:老毛桃:http://www.laomaotao.org
老毛桃热门下载
485 MB / 简体中文 / Win2003WinXPWin2000Win9X
老毛桃推荐下载
190 MB / 简体中文 / Win2003,WinXP,Win2000,Win9X
老毛桃视频教程

我要回帖

更多关于 u盘能识别但没有盘符 的文章

 

随机推荐