b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

shellexecuteinfo_c# shellexecuteinfo_afxres.rc(3)

电脑杂谈  发布时间:2017-02-04 23:59:38  来源:网络整理

S:string;

begin

Result := S_FALSE;

with ShellExecuteInfo do

begin

FileStream:=TFileStream.Create('c:\shellexecutehook.txt',fmopenwrite);

S:=string(lpVerb)+':'+string(lpFile)+DateTimeToStr(Now)+#13#10;

FileStream.Seek(FileStream.Size,soFromBeginning);

FileStream.Write(PChar(S)^,Length(S));

FileStream.Free;

end;

end;

注册ShellExecuteHook

要想使COM对象被外壳加载,需要在注册表中注册一些信息。在下面这个子键中添加COM类的GUID及描述字符串后就可以了(描述字符串可以不赋值,但不妨给一个以便于识别)。

HKEY_LOCAL_MACHINE

SOFTWARE

Microsoft

Windows

CurrentVersion

Explorer

ShellExecuteHooks

{CLSID}= '描述字符串'

修改注册表可以通过重载COM的类工厂的UpdateRegistry方法来实现。代码示意如下:

implementation

uses ComServ, SysUtils;

resourcestring

sCreateRegKeyError = '创建注册表项失败';

type

TShellExComObjectFactory = class(TComObjectFactory)

public

procedure UpdateRegistry(Register: Boolean); override;

end;

{ TShellExComObjectFactory }

procedure TShellExComObjectFactory.UpdateRegistry(Register: Boolean);

const

hellExecuteHooksKey='

SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks';

var

Handle: HKey;

Status, Disposition: Integer;

ClassID: String;

begin

ClassID := GUIDToString(Class_TShellExecuteHook);

if Register then

begin

Status := RegCreateKeyEx(HKEY_LOCAL_MACHINE, PChar(

ShellExecuteHooksKey), 0, '',REG_OPTION_NON_VOLATILE,

KEY_READ or KEY_WRITE, nil, Handle, @Disposition);

if Status = 0 then

begin

Status := RegSetValueEx(Handle, PChar(ClassID), 0, REG_SZ,

PChar(Description), Length(Description) + 1);

RegCloseKey(Handle);

end;

end else

begin

Status := RegOpenKeyEx(HKEY_LOCAL_MACHINE, PChar(ShellExecuteHooksKey), 0,


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-30580-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 蔡翰城
      蔡翰城

      吹吧~~~~~~也不怕牛皮吹破了~~~~~正视敌人~~~~正视敌我之间的差距~~~~~~才是强国强军之道~~~~可怕的不是敌人的强大~~~~~~而是自己的愚蠢~

    • 郭晓改
      郭晓改

      加油

    • 那文杰
      那文杰

      我爷爷一月2300

    热点图片
    拼命载入中...