阿晴晴同学 发表于 2020-6-22 17:05:15

ObjectARX如何打开已知密码的dwg

接触ObjectArx不久,想向大家请教一下,
现在已知dwg的密码,我想通过arx打开它,我查帮助文档,有两个函数是打开文件,分别是AcApDocManager::appContextOpenDocument和AcApDocManager::openDocument,但是都没有接受密码的参数,
我刚刚在论坛里搜了下,有用AutoLISP/Visual LISP 解决的,链接:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=181551&highlight=%C3%DC%C2%EB,还有个帖子是.net的,但是没人回复,链接:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=176455&highlight=%C3%DC%C2%EB

我想请教一下ObjectArx该如何实现?

luowy 发表于 2020-7-2 21:52:48

这个很简单啊
AcDbDatabase *pDB->readDWG(const ACHAR *pFileName, _SH_DENYWR,false, password);

移除也很简单
static bool RemovePasswordProtection(AcDbDatabase *pDb)
{
    const SecurityParams *parSecOld = pDb->cloneSecurityParams();
    SecurityParams parSecNew = *parSecOld;
    parSecNew.ulFlags = 0; // Clear all security flags
    return (pDb->setSecurityParams(&parSecNew));
}
// Main function remove password from current drawing
static void PWDRemovePwd(void)
{
    AcDbDatabase *pCurDb= acdbCurDwg();
    AcApDocument *pCurDoc = curDoc();
    RemovePasswordProtection(pCurDb);
    pCurDb->saveAs(pCurDoc->fileName(),NULL);
}
参考https://forums.autodesk.com/t5/objectarx/any-way-to-remove-password-from-a-dwg/td-p/3427433
页: [1]
查看完整版本: ObjectARX如何打开已知密码的dwg