none
vs2005在win7下调用dll失败,但在XP下正常。相信是权限问题,请问应该如何解决? RRS feed

  • 问题

  • vs2005在win7下通过IIS7调试时,调用dll失败,但在XP下正常。相信是权限问题,请问应该如何解决?

    能不能设置dll默认以管理员身分运行?

    备注:此DLL已注册成功!

    2010年10月13日 3:09

答案

  • 先检查一下这个 DLL 调用,是否有 E_ACCESS_DENIED 错误,如果有,那就是 UAC 的问题。

    DLL 并不是一个宿主,它需要依靠特定的宿主 (如动态链接它的可执行文件,或者 RunDll32,DllHost,SvsHost 等其他辅助) 才能运行。因此,需要在其宿主进程上设置 UAC 级别。所以,不可以对 DLL 单独设置 UAC 运行级别。

    Windows 7 的 IIS 有几种运行用户凭据,一个是 ApplicationPool,这个的话,默认用户是 IUSR 匿名用户,需要把该用户的权限加成可执行;如果是指定凭据,如 Network Service,则把相应的系统用户权限加给这个 DLL。基本上都能解决问题。

    如果用 ApplicationPool 不行的话,直接把凭据改成 Network Service,然后给 DLL 加 Network Service 完全控制。一般问题可以解决。


    Mark Zhou
    2010年10月13日 12:30

全部回复

  • 先检查一下这个 DLL 调用,是否有 E_ACCESS_DENIED 错误,如果有,那就是 UAC 的问题。

    DLL 并不是一个宿主,它需要依靠特定的宿主 (如动态链接它的可执行文件,或者 RunDll32,DllHost,SvsHost 等其他辅助) 才能运行。因此,需要在其宿主进程上设置 UAC 级别。所以,不可以对 DLL 单独设置 UAC 运行级别。

    Windows 7 的 IIS 有几种运行用户凭据,一个是 ApplicationPool,这个的话,默认用户是 IUSR 匿名用户,需要把该用户的权限加成可执行;如果是指定凭据,如 Network Service,则把相应的系统用户权限加给这个 DLL。基本上都能解决问题。

    如果用 ApplicationPool 不行的话,直接把凭据改成 Network Service,然后给 DLL 加 Network Service 完全控制。一般问题可以解决。


    Mark Zhou
    2010年10月13日 12:30
  • vs2005在win7下通过IIS7调试时,调用dll失败,但在XP下正常。相信是权限问题,请问应该如何解决?

    能不能设置dll默认以管理员身分运行?

    备注:此DLL已注册成功!

    hi,
    请问是啥dll,是win32 api??如果是的话,win7与XP的dll名称可能不一漾,你必须找出支持win7的dll

    秘訣無它,唯勤而已
    2010年10月15日 7:56