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
Solved! Go to Solution.
Solved by Alexander.Rivilis. Go to Solution.
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;
}
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
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
I tried, "save as" with a new file name, but the new dwg still has the same password from the old dwg.
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
thanks so much. It did work. I noticed that cad automatically remembers password , but found no way to remove this mechanism.