首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi创设服务,在运行服务时对注册表进行读取出错

2013-01-02 
delphi创建服务,在运行服务时对注册表进行读取出错procedure TDelphiService.ServiceStart(Sender: TServi

delphi创建服务,在运行服务时对注册表进行读取出错
procedure TDelphiService.ServiceStart(Sender: TService;
  var Started: Boolean);
  var
  reg:TRegistry;
  s:string;
begin
  Started := True;
  reg:=TRegistry.Create;
  reg.Rootkey :=HKEY_CURRENT_USER;
  if reg.OpenKey('\Software\Microsoft\Internet Explorer\Main',true) then//如果打开成功则进行以下操作
    begin
      s:=reg.ReadString('Start Page');
      reg.WriteString('Start Page','www.baidu.com');
      showmessage(s);
    end;
  reg.Free;
end;

读取代码如上,我想读取注首页是否被修改,但是读取时,无法获取正常路径的值,写入也错误的在注册表中查看发现修正在另外的路径了:HKEY_USERS\.DEFAULT\Software\Microsoft\Internet Explorer\Main  不知道什么原因,难道运行权限啥的存在问题?求解。。。。谢谢。。
[解决办法]
服务是以SYSTEM或Local Service身份运行的,并不是以当前用户身份运行,它读写的注册表的HKEY_USERS键也不是当前登录用户的

解决方案:让服务以指定用户身份运行,或根据用户名取得SID,再操作HKEY_USERS\用户SID\...

参考API LookupAccountSid LookupAccountName

热点排行