Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,78 @@
|
|||
#[cfg(windows)]
|
||||
mod bindings {
|
||||
::windows::include_bindings!();
|
||||
}
|
||||
|
||||
#[cfg(windows)]
|
||||
use bindings::{
|
||||
Windows::Win32::Security::{
|
||||
GetTokenInformation, OpenProcessToken, PSID, TOKEN_ACCESS_MASK, TOKEN_INFORMATION_CLASS,
|
||||
TOKEN_USER,
|
||||
},
|
||||
Windows::Win32::SystemServices::{
|
||||
GetCurrentProcess, OpenEventLogA, ReportEventA, ReportEvent_wType, HANDLE, PSTR,
|
||||
},
|
||||
};
|
||||
|
||||
#[cfg(windows)]
|
||||
fn main() -> windows::Result<()> {
|
||||
let ph = unsafe { GetCurrentProcess() };
|
||||
let mut th: HANDLE = HANDLE(0);
|
||||
unsafe { OpenProcessToken(ph, TOKEN_ACCESS_MASK::TOKEN_QUERY, &mut th) }.ok()?;
|
||||
|
||||
// Determine the required buffer size, ignore ERROR_INSUFFICIENT_BUFFER
|
||||
let mut length = 0_u32;
|
||||
unsafe {
|
||||
GetTokenInformation(
|
||||
th,
|
||||
TOKEN_INFORMATION_CLASS::TokenUser,
|
||||
std::ptr::null_mut(),
|
||||
0,
|
||||
&mut length,
|
||||
)
|
||||
}
|
||||
.ok()
|
||||
.unwrap_err();
|
||||
|
||||
// Retrieve the user token.
|
||||
let mut token_user_bytes = vec![0u8; length as usize];
|
||||
unsafe {
|
||||
GetTokenInformation(
|
||||
th,
|
||||
TOKEN_INFORMATION_CLASS::TokenUser,
|
||||
token_user_bytes.as_mut_ptr().cast(),
|
||||
length,
|
||||
&mut length,
|
||||
)
|
||||
}
|
||||
.ok()?;
|
||||
|
||||
// Extract the pointer to the user SID.
|
||||
let user_sid: PSID = unsafe { (*token_user_bytes.as_ptr().cast::<TOKEN_USER>()).User.Sid };
|
||||
|
||||
// use the Application event log
|
||||
let event_log_handle = unsafe { OpenEventLogA(PSTR::default(), "Application") };
|
||||
|
||||
let mut event_msg = PSTR(b"Hello in the event log\0".as_ptr() as _);
|
||||
unsafe {
|
||||
ReportEventA(
|
||||
HANDLE(event_log_handle.0), //h_event_log: T0__,
|
||||
ReportEvent_wType::EVENTLOG_WARNING_TYPE, // for type use EVENTLOG_WARNING_TYPE w_type: u16,
|
||||
5, // for category use "Shell" w_category: u16,
|
||||
1, // for ID use 1 dw_event_id: u32,
|
||||
user_sid, // lp_user_sid: *mut c_void,
|
||||
1, // w_num_strings: u16,
|
||||
0, // dw_data_size: u32,
|
||||
&mut event_msg, // lp_strings: *mut PSTR,
|
||||
std::ptr::null_mut(), // lp_raw_data: *mut c_void,
|
||||
)
|
||||
}
|
||||
.ok()?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(not(windows))]
|
||||
fn main() {
|
||||
println!("Not implemented");
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
fn main() {
|
||||
#[cfg(windows)]
|
||||
{
|
||||
windows::build!(Windows::Win32::SystemServices::{GetCurrentProcess, ReportEventA, OpenEventLogA, ReportEvent_wType, HANDLE, PSTR},
|
||||
Windows::Win32::Security::{OpenProcessToken, GetTokenInformation, TOKEN_ACCESS_MASK, TOKEN_INFORMATION_CLASS, TOKEN_USER, PSID});
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[target.'cfg(windows)'.dependencies]
|
||||
windows = "0.7.0"
|
||||
|
||||
[target.'cfg(windows)'.build-dependencies]
|
||||
windows = "0.7.0"
|
||||
Loading…
Add table
Add a link
Reference in a new issue