没用过 Windows server 版本,情况不明
按理能手动“以管理员身份运行”成功,用代码自动运行也应该可以,是否系统登录身份也要有管理权?
另:用 regsvr32 注册的DLL,自身就有注册函数:
示例:
FUNCTION _RegServer(szName, ddFlags)
    IF INLIST(ddFlags, 1, 2) AND !FILE(szName)
        MESSAGEBOX(szName + " 文件不存在")
        RETURN .F.
    ENDIF
    LOCAL szCLSID, ddRet
    DO CASE 
        * 检测是否已注册, szName为DLL文件名
    CASE ddFlags == 0
        DECLARE LONG CLSIDFromProgID IN Ole32 STRING@, STRING@
        szCLSID = REPLICATE(0h00, 16)
        ddRet = CLSIDFromProgID(STRCONV(szName + 0h00, 5), @szCLSID)
        CLEAR DLLS "CLSIDFromProgID"
        RETURN (ddRet == 0)
        * 注册
    CASE ddFlags == 1
        DECLARE LONG DllRegisterServer IN (szName)
        ddRet = DllRegisterServer()
        CLEAR DLLS "DllRegisterServer"
        * 卸载
    CASE ddFlags == 2
        DECLARE LONG DllUnregisterServer IN (szName)
        ddRet = DllUnregisterServer()
        CLEAR DLLS "DllUnregisterServer"
    OTHERWISE
        MESSAGEBOX("调用_RegServer()的参数无效")
        RETURN .F.
    ENDCASE
    IF (ddRet != 0)
        MESSAGEBOX("调用_RegServer()失败,试用管理员身份运行。")
    ENDIF
    RETURN (ddRet == 0)
ENDFUNC