portable-service: run background
Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
		
							parent
							
								
									3f77b6bc64
								
							
						
					
					
						commit
						45bfb0e22e
					
				| @ -1480,6 +1480,27 @@ pub fn get_user_token(session_id: u32, as_user: bool) -> HANDLE { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| pub fn run_background(exe: &str, arg: &str) -> ResultType<bool> { | ||||
|     let wexe = wide_string(exe); | ||||
|     let warg; | ||||
|     unsafe { | ||||
|         let ret = ShellExecuteW( | ||||
|             NULL as _, | ||||
|             NULL as _, | ||||
|             wexe.as_ptr() as _, | ||||
|             if arg.is_empty() { | ||||
|                 NULL as _ | ||||
|             } else { | ||||
|                 warg = wide_string(arg); | ||||
|                 warg.as_ptr() as _ | ||||
|             }, | ||||
|             NULL as _, | ||||
|             SW_HIDE, | ||||
|         ); | ||||
|         return Ok(ret as i32 > 32); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| pub fn run_uac(exe: &str, arg: &str) -> ResultType<bool> { | ||||
|     let wop = wide_string("runas"); | ||||
|     let wexe = wide_string(exe); | ||||
|  | ||||
| @ -476,7 +476,12 @@ pub mod client { | ||||
|         unsafe { | ||||
|             libc::memset(shmem.as_ptr() as _, 0, shmem.len() as _); | ||||
|         } | ||||
|         if crate::common::run_me(vec!["--portable-service"]).is_err() { | ||||
|         if crate::platform::run_background( | ||||
|             &std::env::current_exe()?.to_string_lossy().to_string(), | ||||
|             "--portable-service", | ||||
|         ) | ||||
|         .is_err() | ||||
|         { | ||||
|             *SHMEM.lock().unwrap() = None; | ||||
|             bail!("Failed to run portable service process"); | ||||
|         } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user