没用过 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