@@ -6,9 +6,12 @@ use std::{
66} ;
77use windows_sys:: Win32 :: {
88 Foundation :: ERROR_SUCCESS ,
9- System :: Registry :: {
10- HKEY_CURRENT_USER , HKEY_LOCAL_MACHINE , REG_EXPAND_SZ , REG_SZ , RRF_RT_REG_EXPAND_SZ ,
11- RRF_RT_REG_SZ , RegGetValueW ,
9+ System :: {
10+ Registry :: {
11+ RegGetValueW , HKEY_CURRENT_USER , HKEY_LOCAL_MACHINE , REG_EXPAND_SZ , REG_SZ ,
12+ RRF_RT_REG_EXPAND_SZ , RRF_RT_REG_SZ ,
13+ } ,
14+ Threading :: { CREATE_NEW_CONSOLE , CREATE_NO_WINDOW } ,
1215 } ,
1316} ;
1417
@@ -310,7 +313,7 @@ pub fn resolve_windows_app_path(app_name: &str) -> Option<String> {
310313
311314 let resolve_where = |query : & str | -> Option < String > {
312315 let output = Command :: new ( "where" )
313- . creation_flags ( 0x08000000 )
316+ . creation_flags ( CREATE_NO_WINDOW )
314317 . arg ( query)
315318 . output ( )
316319 . ok ( ) ?;
@@ -437,3 +440,24 @@ pub fn resolve_windows_app_path(app_name: &str) -> Option<String> {
437440
438441 None
439442}
443+
444+ pub fn open_in_powershell ( path : String ) -> Result < ( ) , String > {
445+ let path = PathBuf :: from ( path) ;
446+ let dir = if path. is_dir ( ) {
447+ path
448+ } else if let Some ( parent) = path. parent ( ) {
449+ parent. to_path_buf ( )
450+ } else {
451+ std:: env:: current_dir ( )
452+ . map_err ( |e| format ! ( "Failed to determine current directory: {e}" ) ) ?
453+ } ;
454+
455+ Command :: new ( "powershell.exe" )
456+ . creation_flags ( CREATE_NEW_CONSOLE )
457+ . current_dir ( dir)
458+ . args ( [ "-NoExit" ] )
459+ . spawn ( )
460+ . map_err ( |e| format ! ( "Failed to start PowerShell: {e}" ) ) ?;
461+
462+ Ok ( ( ) )
463+ }
0 commit comments