转自:秋毫
原作者:Andy
用job批量导入导出用户组权限(export import user group permission by job script)
导出:
static void ExportAllUserGroupsToFiles(Args _args)
{
SysSecurityUserGroup sysSecurity;
UserGroupInfo userGroupInfo;
userGroupId userGroupId , tmpUserGroupId;
domainId domainId , tmpDomainId;
domainInfo domainInfo;
FilePath filepath;
FileNameSave fileName, fileNameExport;
BinaryIo file;
Filename path, onlyName, ext;
int hwnd;
;
filePath = winApi::browseForPath(hwnd);
if (filePath)
{
sysSecurity = SysSecurityUserGroup::construct();
while select domainInfo
{
domainId = domainInfo.id;
while select userGroupInfo
{
userGroupId = userGroupInfo.id;
if (userGroupId != 'Admin')
{
fileNameExport = domainId + '#' + userGroupId;
fileName = filePath + '//' + fileNameExport;
tmpUserGroupId = sysSecurity.parmUserGroupId();
tmpDomainId = sysSecurity.parmDomainId();
sysSecurity.save();
sysSecurity.parmDomainId( domainId );
sysSecurity.parmUserGroupId( userGroupId );
sysSecurity.load();
sysSecurity.export( fileName );
}
}
}
}
}
导入:
static void ImportUserGroupRightsFromFolder(Args _args)
{
integer hdl, pos;
FileName fileName;
DomainId domainId;
UserGroupId userGroupId;
FilePath filePath = "C://temp_security//";
int hwnd;
#File
;
filePath = winApi::browseForPath(hwnd);
if (filePath)
{
filePath += '//';
[hdl, fileName] = WinAPI::findFirstFile(filePath + #AllFilesName +
#AllFilesExt);
setPrefix('Start');
while (fileName)
{
pos = StrFind(filename,"#",1,strlen(fileName));
if (pos > 0)
{
setprefix(filePath + filename);
domainId = substr(fileName,1,pos-1);
userGroupId = strreplace(substr(fileName,pos+1,strlen(fileName)),'.asg','');
info(strfmt('Domain: %1, Group: %2',domainId,userGroupId));
//info(userGroupId);
sysSecurityUserGroup::importRights(userGroupId,domainId,filePath + fileName);
}
fileName = WinAPI::findNextFile(hdl);
}
WinAPI::findClose(hdl);
}
}