1 在win2000下如何禁止光驱的运行?如何屏蔽右键?
2 如何在自己做的桌面上添加快捷方式的图标?

解决方案 »

  1.   

    (1)屏蔽光驱
    procedure ShieldCDs;
      function IsCDROM(DriveChar: Char): Boolean;
      begin
        Result := GetDriveType(PChar(DriveChar + ':\')) = DRIVE_CDROM;
      end;
    const
      _PATH = '\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer';
    var
      I, T: Integer;
      Buffer, Mask: DWORD;
      R: TRegistry;
    begin
      Mask := 0;
      for I := 0 to 25 do
        if IsCDROM(Char(I + Ord('A'))) then Mask := Mask + 1 shl I;
      R := TRegistry.Create;
      R.Rootkey := HKEY_CURRENT_USER;
      R.CreateKey(_PATH);
      R.OpenKey(_PATH, False);
      if R.ReadBinaryData('NoDrives', Buffer, SizeOf(Buffer)) = 0 then Buffer := 0;
      Buffer := Buffer and not Mask or Mask; // 为了不破坏对其它驱动器的设置。
      R.WriteBinaryData('NoDrives', Buffer, SizeOf(Buffer));
      R.Free;
    end;
      

  2.   

    (2)在桌面上建立快捷方式
    procedure TForm1.Button1Click(Sender: TObject);
    var
    tmpObject : IUnknown;
    tmpSLink : IShellLink;
    tmpPFile : IPersistFile;
    PIDL : PItemIDList;
    StartupDirectory : array[0..MAX_PATH] of Char;
    StartupFilename : String;
    LinkFilename : WideString;
    begin
    StartupFilename := 'c:\windows\notepad.exe';
    tmpObject := CreateComObject(CLSID_ShellLink);//创建建立快捷方式的外壳扩展
    tmpSLink := tmpObject as IShellLink;//取得接口
    tmpPFile := tmpObject as IPersistFile;//用来储存*.lnk文件的接口
    tmpSLink.SetPath(pChar(StartupFilename));//设定notepad.exe所在路径
    tmpSLink.SetWorkingDirectory(pChar(ExtractFilePath(StartupFilename)));//设定工作目录
    SHGetSpecialFolderLocation(0,
    CSIDL_DESKTOPDIRECTORY,
    PIDL);//获得桌面的Itemidlist
    SHGetPathFromIDList(PIDL,
    StartupDirectory);//获得桌面路径
    LinkFilename := StartupDirectory + '\MyNotepad.lnk';
    tmpPFile.Save(pWChar(LinkFilename),FALSE);//保存*.lnk文件
    end;
      

  3.   

    大虾,屏蔽右键不知用哪个API函数