Contrôler l'Autorun pour les CD-Rom



Télécharger le projet exemple (3.69 ko)

Vous pouvez contrôler la valeur de 4 octets (32 bits) dans la vase de registre Windows sous la clé

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun

Placer les bits suivants dans la valeur aura pour conséquence de désactiver l'autorun pour le périphérique désigné par le numéro de bit


N° Bit / Valeur






0DRIVE_UNKNOWN
1DRIVE_NO_ROOT_DIR
2DRIVE_REMOVABLE
3DRIVE_FIXED
4DRIVE_REMOTE
5DRIVE_CDROM
6DRIVE_RAMDISK




Attention toutefois, il est nécessaire de redémarrer l'ordinateur pour que les changements soient pris en compte.

Vous pouvez également configurer cette valeur pour tester la fonction autorun d'un programme que vous développez à partir d'une diquette ou d'un disque réseau en mettant leur valeur sur Autorun=On pour démarrer à partir d'une disquette (DRIVE_REMOVEABLE) ou d'un disque réseau (DRIVE_REMOTE). Si le périphérique n'a pas d'auto-détection d'insertion, insérez simplement le disque et appuyez sur la touche F5 à partir de l'explorateur Windows devrait provoquer l'acitvation de l'autorun.

L'exemple suivant démontre comment controler si la fonction Autorun pour les CD est activé, et montre aussi bien comment l'activer que la désactiver.


Autorun pour les CD Rom

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, registry;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

const
  verb = 'L''Autorun pour les CD-ROM est ';
  on = 'activé';
  off = 'désactivé';

var
  Form1: TForm1;

function IsCdAutoRunOn : bool;
procedure SetCdAutoRun(bOn : bool);

implementation

{$R *.DFM}

function IsCdAutoRunOn : bool;
var
  reg: TRegistry;
  AutoRunSetting : integer;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;
  reg.OpenKey(
    'Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',
              false);
  reg.ReadBinaryData('NoDriveTypeAutoRun',
                     AutoRunSetting ,
                     sizeof(AutoRunSetting));
  reg.CloseKey;
  reg.free;
  result :=  not ((AutoRunSetting and (1 shl 5)) <> 0);
end;

procedure SetCdAutoRun(bOn : bool);
var
  reg: TRegistry;
  AutoRunSetting : integer;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;
  reg.LazyWrite := false;
  reg.OpenKey(
    'Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',
              false);
  reg.ReadBinaryData('NoDriveTypeAutoRun',
                     AutoRunSetting ,
                     sizeof(AutoRunSetting));
  if bOn then
    AutoRunSetting := AutoRunSetting and not (1 shl 5)
  else
    AutoRunSetting := AutoRunSetting or (1 shl 5);
  reg.WriteBinaryData('NoDriveTypeAutoRun',
                      AutoRunSetting ,
                      sizeof(AutoRunSetting));
  reg.CloseKey;
  reg.free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetCDAutorun(True);
  if IsCDAutorunOn then Label1.Caption := verb + on
  else Label1.Caption := verb + off;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SetCDAutorun(False);
  if IsCDAutorunOn then Label1.Caption := verb + on
  else Label1.Caption := verb + off;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  if IsCDAutorunOn then Label1.Caption := verb + on
  else Label1.Caption := verb + off;
end;

end.



3 requête(s) SQL executée(s) en 0.001 Secs - Temps total de génération de la page : 0.007 Secs