Comment détecter les lettres de lecteur attribuées deux fois?

6

Il existe un petit bogue dans Windows pour lequel je voudrais créer une petite application comme solution. Donc, dans mon entreprise, nous avons plusieurs lecteurs réseau (F: \, G: \, H: \, I: \ etc.) et parfois si je connecte un périphérique USB externe tel qu'un lecteur de carte, Windows affectera un périphérique déjà utilisé. lettre de lecteur. Ainsi, par exemple, j'ai un lecteur réseau F: \ et je connecte mon lecteur de carte auquel Windows attribue également F: \ à ce périphérique. Je ne peux donc pas utiliser ce périphérique USB tant que je n'ai pas changé sa lettre de lecteur.

Donc, ma question est:

  • Comment détecter ces périphériques ou lettres de lecteur lorsqu'ils sont affectés deux fois?
  • Comment puis-je détecter lequel d'entre eux est un périphérique USB?
  • Comment puis-je réaffecter une lettre de lecteur à ce périphérique?

Je veux faire ça en C.

Merci.

kampi
la source
Problème administratif - redirection.
pst
1
@ pst Que voulez-vous dire par problème d'administrateur? Je veux juste savoir comment obtenir ces lettres de lecteur attribuées deux fois.
Ce que pst voulait probablement dire, c'est que vous pouvez modifier manuellement l'affectation de lettre de lecteur . Il est sûrement plus rapide de réaffecter des lettres vous-même que de devoir rédiger un programme pour une situation extrêmement spécifique que vous devez tester.
In silico
@ In silico - Je le sais, mais la raison pour laquelle je veux créer une application est qu'un utilisateur ne peut pas le modifier manuellement car ils ne sont pas administrateurs. C'est pourquoi je souhaite créer une application afin de pouvoir la modifier également. .
1
@ Breakthrough: oui, voici ce dont j'ai besoin, les API Windows appropriées. Necrolis a déjà publié des API de Volume Managament pour le moment. J'essaie de les utiliser :) Je ne sais pas non plus pourquoi cette question a été migrée et qui ou pourquoi cette question a été migrée. Merci de votre aide!
kampi

Réponses:

2

la plupart de ce que vous voulez peut être fait avec FindFirstVolume et ses amis (l'exemple ici couvre tout), pour obtenir le type, vous utiliseriez GetDriveType, finalement SetVolumeMountPoint renommera une lettre de lecteur de périphérique.

Necrolis
la source
SetVolumeLabel changera simplement l'étiquette du lecteur et non la lettre de lecteur attribuée.
@RedX: correct, corrigé
Necrolis
Eh bien c'est maladroit. La question venait de StackOverflow, la réponse était correcte en recommandant les fonctions d'API appropriées, puis elle a été migrée plus tard vers SuperUser sans raison valable. Même indique que l'utilisateur veut le faire en C.
0xC0000022L
@ 0xC0000022L: vous avez raison. Je n'ai pas non plus compris pourquoi il avait migré ...
kampi
@ 0xC0000022L: Hmmm, c'est vraiment gênant: | tant que cela reste utile comme réponse.
Necrolis