(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;
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;
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;