use crate::update;
use serde::{Deserialize, Serialize};
use std::time::SystemTime;
use wmi::{COMLibrary, WMIConnection, WMIDateTime};
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct UserAccounts {
pub user_accounts: Vec<Win32_UserAccount>,
pub last_updated: SystemTime,
}
update!(UserAccounts, user_accounts);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct Accounts {
pub accounts: Vec<Win32_Account>,
pub last_updated: SystemTime,
}
update!(Accounts, accounts);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct Groups {
pub groups: Vec<Win32_Group>,
pub last_updated: SystemTime,
}
update!(Groups, groups);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct LogonSessions {
pub logon_sessions: Vec<Win32_LogonSession>,
pub last_updated: SystemTime,
}
update!(LogonSessions, logon_sessions);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct NetworkLoginProfiles {
pub network_login_profiles: Vec<Win32_NetworkLoginProfile>,
pub last_updated: SystemTime,
}
update!(NetworkLoginProfiles, network_login_profiles);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct SystemAccounts {
pub system_accounts: Vec<Win32_SystemAccount>,
pub last_updated: SystemTime,
}
update!(SystemAccounts, system_accounts);
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_UserAccount {
pub AccountType: Option<u32>,
pub Caption: Option<String>,
pub Description: Option<String>,
pub Disabled: Option<bool>,
pub Domain: Option<String>,
pub FullName: Option<String>,
pub InstallDate: Option<WMIDateTime>,
pub LocalAccount: Option<bool>,
pub Lockout: Option<bool>,
pub Name: Option<String>,
pub PasswordChangeable: Option<bool>,
pub PasswordExpires: Option<bool>,
pub PasswordRequired: Option<bool>,
pub SID: Option<String>,
pub SIDType: Option<u8>,
pub Status: Option<String>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_Account {
pub caption: Option<String>,
pub description: Option<String>,
pub domain: Option<String>,
pub install_date: Option<WMIDateTime>,
pub local_account: Option<bool>,
pub name: Option<String>,
pub sid: Option<String>,
pub sid_type: Option<u8>,
pub status: Option<String>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_Group {
pub Caption: Option<String>,
pub Description: Option<String>,
pub InstallDate: Option<WMIDateTime>,
pub Status: Option<String>,
pub LocalAccount: Option<bool>,
pub SID: Option<String>,
pub SIDType: Option<u8>,
pub Domain: Option<String>,
pub Name: Option<String>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_LogonSession {
pub Caption: Option<String>,
pub Description: Option<String>,
pub InstallDate: Option<WMIDateTime>,
pub Name: Option<String>,
pub Status: Option<String>,
pub StartTime: Option<WMIDateTime>,
pub AuthenticationPackage: Option<String>,
pub LogonId: Option<String>,
pub LogonType: Option<u32>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_NetworkLoginProfile {
pub Caption: Option<String>,
pub Description: Option<String>,
pub SettingID: Option<String>,
pub AccountExpires: Option<WMIDateTime>,
pub AuthorizationFlags: Option<u32>,
pub BadPasswordCount: Option<u32>,
pub CodePage: Option<u32>,
pub Comment: Option<String>,
pub CountryCode: Option<u32>,
pub Flags: Option<u32>,
pub FullName: Option<String>,
pub HomeDirectory: Option<String>,
pub HomeDirectoryDrive: Option<String>,
pub LastLogoff: Option<String>,
pub LastLogon: Option<WMIDateTime>,
pub LogonHours: Option<String>,
pub LogonServer: Option<String>,
pub MaximumStorage: Option<u64>,
pub Name: Option<String>,
pub NumberOfLogons: Option<u32>,
pub Parameters: Option<String>,
pub PasswordAge: Option<String>,
pub PasswordExpires: Option<WMIDateTime>,
pub PrimaryGroupId: Option<u32>,
pub Privileges: Option<u32>,
pub Profile: Option<String>,
pub ScriptPath: Option<String>,
pub UnitsPerWeek: Option<u32>,
pub UserComment: Option<String>,
pub UserId: Option<u32>,
pub UserType: Option<String>,
pub Workstations: Option<String>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_SystemAccount {
pub Caption: Option<String>,
pub Description: Option<String>,
pub InstallDate: Option<WMIDateTime>,
pub Status: Option<String>,
pub LocalAccount: Option<bool>,
pub SID: Option<String>,
pub SIDType: Option<u8>,
pub Domain: Option<String>,
pub Name: Option<String>,
}