I had some free time that I used to put together all the features JWSCL provides currently. There are some more features that are implemented by other tool classes or functions that I left out in favor of a good overview. A complete overview of all classes, methods and more gives you the documentation at http://jwscldoc.delphi-jedi.net.

So here are the feautures (You can look up the class names on the documentation page):

  • Windows Token management (TJwSecurityToken)
    • Impersonation
    • Supports LogonUser, LsaLogonUser
    • Lots more
  • Full support of Security ID (SID) (TJwSecurityID, TJwSecurityIDList)
    • Also well known security IDs like Everyone (JwsclKnownSid.pas) are stored as simple to use variables.
  • Full support of Access Control Lists (also CALLBACK_ACE and OBJECT_ACE)
    • DACL, SACL
  • Full support of Security Descriptor (SECURITY_DESCRIPTOR) (TJwSecurityDescriptor)
    • DACL, SACL, Owner, Group
    • Implements a simple to use Security Descriptor (TJwSimpleDescriptor)
  • Security Rights Mapping; Maps Generic Rights to specific ones (JwsclMapping.pas)
    • Conversion of Security Rights (DWORD) to Human Readable names (JwFormatAccessRights)
  • Privileges (TJwPrivilege, TJwPrivilegeSet, JwsclPrivileges.pas)
  • Windowstation and Desktops (TJwSecurityWindowStation, TJwSecurityDesktop)
  • Local Security Authority Logon Sessions (TJwLsaLogonSession)
  • Security of Windows objects; files, registry, handles (TJwSecureFileObject, TJwSecureFileObject, TJwSecureGeneralObject)
    • Support of Access Checking (AccessCheck)
    • Supports Inheritance (by default only files and registry)
  • Support of MS AuthZ API; Client Side Access Checks for custom Resources (JwsclAuthCtx.pas)
  • Credentials GUI API (TJwCredentialsPrompt)
  • MS Encryption and Protection API (TJwEncryptionApi,  TJwEncryptMemory, TJwRandomDataGenerator)
  • Windows Version Detection on remote or local client (TJwFileVersion, TJwServerInfo, TJwWindowsVersion)
  • Security Descriptor GUI (TJwSecurityDescriptorDialog)
  • Terminal Sessions (TJwTerminalServer)
    • Server Management
    • Sessions Management
    • Processes Management
  • Vista Elevation (JwShellExecute, JwElevateProcess, JwsclElevation.pas)
  • Vista Integrity Level (Built in)
  • Firewall Administration (TJwsclFirewall)
  • Builtin basic Sma rtpointer Support (TJwAutoLock)
  • Job Object support (TJwJobObject) even with several sessions (TJwJobObjectSessionList)
  • Process Handling that encapsulates support for different Windows Versions and bugs in API (functions JwCreateProcessAsAdminUser, JwCreateProcessInSession, JwGetProcessSessionID, JwGetTokenFromProcess, JwProcessIdToSessionId)
  • Support Memory Mapped Objects (TJwFileStreamEx, TJwIPCStream, TJwVirtualStream)
  • Extended Thread Support lile naming threads and WaitWithTimeOut (TJwThread)
  • Hashing Support (TJwHash) 
    • For JWSCL classes (JwObjectHash)
    • For files (JwCreateFileHash, JwCompareFileHash, JwDataHash, JwIntegerHash) in combination with fast Memory Mapping.
  • DCOM support for Client and Server (currently only developer branch); CoInitializeSecurity (TJwComProcessSecurity), Authentication, Impersonation, Proxy Security Blanket (TJwComClientSecurity, TJwComServerSecurity), Access Control (TJwServerAccessControl), DCOM Configuration (TJwComRegistrySecurity) of Global Configs and Class Security.
  • Easy to use WinAPI (Msg)WaitForMultipleObjects functions (JwMsgWaitForMultipleObjects, JwMsgWaitForMultipleObjects)
  • Multi Language Support of Resource Files (LoadLocalizedString)
  • Ansi- & Unicode due to own Delphi compatible String type TJwString (JwsclAnsiUniCode.pas)
  • Mapping of Windows Constants to Delphi enumeration (TJwEnumMap)
  • All errors are reported by exceptions using a derived class from EJwsclSecurityException. (JwsclExceptions.pas)
  • Supports Bugreports with Eurekalog (JwsclEurekaLogUtils.pas)
  • JWSCL is based on OOP

To come

  • Active Directory Support
  • User Account Management

Current version is 0.9.3 Download.