当前位置: 首页 > 编程语言 > C#

C#如何将CDROM的驱动器号从D:更改为Z:分享

时间:2023-04-10 22:46:00 C#

C#学习教程:C#如何把光驱的盘符从D:改成Z:WMI。还有其他方法可以使用C#执行此操作吗?publicvoidsetVolCDROM(){SelectQueryqueryCDROM=newSelectQuery("SELECT*FROMWin32_cdromdrive");ManagementObjectSearchersearcherCDROM=newManagementObjectSearcher(queryCDROM);foreach(ManagementObjectcdromLetterinsearcherCDROM.Get()){MessageBox.Showter[cdrom"L].ToString()+"n"+cdromLetter["Manufacturer"].ToString());if(cdromLetter["Drive"].ToString()=="D:"){cdromLetter["Drive"]="Z:";cdromLetter.Put();}}}我不知道WMI,但是你可以用winapi来改变盘符,这是我移植到C#的一个例子(只有你需要的部分)"kernel32.dll")]staticexternboolDeleteVolumeIportPoint("MountPoint)("stringlpszkernel32.dll")]staticexternboolSetVolumeMountPoint(stringlpszVolumeMountPoint,stringlpszVolumeName);常量MAX_PATH=260;privatevoidChangeDriveLetter(){StringBuildervolume=newStringBuilder(MAX_PATH);if(!GetVolumeNameForVolumeMountPoint(@"D:",volume,(uint)MAX_PATH))Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error());如果(!DeleteVolumeMountPoint(@"D:"))Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error());如果(!SetVolumeMountPoint(@"Z:",volume.ToString()))Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error());小心运行这段代码,你必须在将它分配给一个新盘符之前删除驱动器挂载点,这可能会导致问题,原始代码:/********************************************************************警告WARNINGWARNINGWARNINGWARNINGWARNINGWARNINGWARNING该程序将更改驱动器号分配,并且更改在重新启动后仍然存在。如果您的软盘上没有此程序,请不要删除硬盘的驱动器号,否则您可能无法再次访问您的磁盘!**************************************************************************/Jason,你可以使用Win32_Volume类来尝试这一段代码ManagementObjectSearcherdisks=newManagementObjectSearcher("root\CIMV2","SELECT*FROMWin32_VolumeWHEREDriveLetter='D:'");foreach(ManagementObjectdiskindisks.Get()){disk.Get();disk["DriveLetter"]="Z:";磁盘.Put();谢谢罗德里戈!这正是我想要的我只是添加了一些wmi代码,这样我就可以确保获取CDROM驱动器。publicvoidsetCDROM(){SelectQueryqueryCDROM=newSelectQuery("SELECT*FROMWin32_cdromdrive");ManagementObjectSearchersearcherCDROM=newManagementObjectSearcher(queryCDROM);诠释我=0;foreach(ManagementObjectcdromLetterinsearcherCDROM.Get()){//ifstementinplacetohandleiftherearemorethanonecdromdrive//这只会处理遇到的第一个cdrom驱动器i=i+1;if(i==1){//运行传递驱动器盘符字符串的ChangeDriveLetter方法ChangeDriveLetter(cdromLetter["Drive"].ToString());我认为WMI的SelectQueries应该只读取/查询信息而不执行任何更新。我可能是错的,但我想要更改驱动器号,您应该在某些Win32Api中降低...请参阅IOCTL_MOUNTMGR_CREATE_POINT。祝你好运。我想在rodrigoq的解决方案中添加一个注释,在Vista及更高版本上你需要以提升的权限运行你的应用程序,否则你将无法删除挂载点并为其分配新的驱动器号,这将导致异常被抛出。以上就是C#学习教程:C#如何将光驱的盘符从D:改为Z:的所有内容分享,如果对大家有用还需要详细了解C#学习教程,希望大家多多支持更多关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: