ObjectARX
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

any way to remove password from a dwg

8 REPLIES 8
SOLVED
Reply
Message 1 of 9
421232206
6018 Views, 8 Replies

any way to remove password from a dwg

I want to remove password from dwgs whose password is know.  I can open these dwgs by known pasword, but I can't find a way to save them without password.

 

        SecurityParams secParams;
        {
            secParams.cbSize = 48;
            secParams.ulFlags = 1;
            secParams.ulProvType = 1;
            secParams.ulAlgId = 26625;
            secParams.ulKeyLength = 40;
            secParams.wszPassword = szPassword;//if I give NULL to this param, the "saveAs" method crushes.
            secParams.wszProvName = _T("Microsoft Base Cryptographic Provider v1.0");
        }

     es = pDb->saveAs(szFileName,&secParams);// I want to remove their passsword

 

Technology change world! Coding change technology! We coders are coding!
8 REPLIES 8
Message 2 of 9
owenwengerd
in reply to: 421232206

Pass NULL for the second argument to saveAs().

--
Owen Wengerd
ManuSoft
Message 3 of 9
421232206
in reply to: owenwengerd

thanks, but are you sure? I tried the following code,  it dosen't work. The password of the dwg still exists.

          

             AcDbDatabase* pDb = new AcDbDatabase(false);
            Acad::ErrorStatus es = pDb->readDwgFile(iterS->c_str(),_SH_DENYWR,false,szOldPassword);
            if (Acad::eOk == es)
            {
                if (_tcscmp(szPassword,_T("")) == 0)
                {
                    es = pDb->saveAs(iterS->c_str(),NULL);
                }
                else
                {
                    es = pDb->saveAs(iterS->c_str(),&secParams);
                }
                
                if (Acad::eOk == es ) ++nCount;
            }

Technology change world! Coding change technology! We coders are coding!
Message 4 of 9

Try:

secParams.wszPassword =_T("");

 

 

 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 5 of 9

CAD enters dead loop, If I pass an empty string(not null) .

Technology change world! Coding change technology! We coders are coding!
Message 6 of 9

What about save dwg with other filename without password?

There is a method AcDbDatabase::setSecurityParams. Try pass NULL to it.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 7 of 9

I tried, "save as" with a new file name, but the new dwg still has the same password from the old dwg.

Technology change world! Coding change technology! We coders are coding!
Message 8 of 9

OK. Working code:

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);
}

 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 9 of 9

thanks so much. It did work.  I noticed that cad  automatically remembers password , but found no way to remove this mechanism.

Technology change world! Coding change technology! We coders are coding!

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report

”Boost