我在普通程序中调用wininet库的FindFirstUrlCacheEntry(), 结果正常. 这时我的当前用户名为administrator.
但在服务程序中调用该函数时,结果错误, 错误代码为259(无有效数据).
服务程序的用户为system.
估计是system用户的权限不够.如何提升用户的权限?

解决方案 »

  1.   

    已经有个帖子了

    http://topic.csdn.net/t/20010811/18/233895.html
      

  2.   

    你查一下数据结构:PTOKEN_PRIVILEGES,涉及到一些用户权限的问题。
    你可以查一下函数:LookupPrivilegeName();
      

  3.   

    BOOL AddDebugPrivilege()
    {
      HANDLE token;
      TOKEN_PRIVILEGES TokenPrivileges, PreviousState;
      DWORD ReturnLength = 0;
      if(OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES,&token))
      {
        if(LookupPrivilegeValueA(NULL,"SeDebugPrivilege",&TokenPrivileges.Privileges[0].Luid))
        {
          TokenPrivileges.PrivilegeCount = 1;
          TokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
          return (AdjustTokenPrivileges(token,FALSE,&TokenPrivileges,sizeof(TOKEN_PRIVILEGES),
                  &PreviousState,&ReturnLength));
        }
      }
      return (FALSE);
    }
      

  4.   

    我在VISTA 的注册表中 有个KEY 中 有 Everyone(READ) ,SYSTEM(FULL CONTROL) ,OWNER_RIGHT,三个用户,
    我的登陆用户为sd ,是ADMINISTROR 权限的.  当我以读写 方式打开该KEY 时(RegCreateKeyEx)
    没发打开. 以 只读 到是可以打开 .当我手动设置Everyone的权限为FULL CONTROL 时 我就可以以读写方式打开了.
      不知道 有什么办法 用代码设置该Everyone 的权限由 READ 到FULL CONTROL
      

  5.   

    看返回的失败原因等 GetLastError
      

  6.   

    FindFirstUrlCacheEntry是访问当前用户的internet缓存,在服务里面当然会失败了
    你可以让用户在登陆之后运行一个和服务交互的程序