github.com/iDigitalFlame/xmt@v0.5.4/device/xy_windows_no_crypt.go (about) 1 //go:build windows && !crypt 2 // +build windows,!crypt 3 4 // Copyright (C) 2020 - 2023 iDigitalFlame 5 // 6 // This program is free software: you can redistribute it and/or modify 7 // it under the terms of the GNU General Public License as published by 8 // the Free Software Foundation, either version 3 of the License, or 9 // any later version. 10 // 11 // This program is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 // 16 // You should have received a copy of the GNU General Public License 17 // along with this program. If not, see <https://www.gnu.org/licenses/>. 18 // 19 20 package device 21 22 import "os" 23 24 const ( 25 // ShellArgs is the default machine specific command shell arguments to run 26 // commands. 27 ShellArgs = "/c" 28 // PowerShell is the path to the PowerShell binary, which is based on the 29 // underlying OS type. 30 PowerShell = "powershell.exe" 31 debugDlls = "hal.dll\nwmi.dll\nwpx.dll\nwdc.dll\nzipfldr.dll\ninput.dll\nspp.dll" 32 ) 33 34 func shell() string { 35 if s, ok := os.LookupEnv("ComSpec"); ok { 36 return s 37 } 38 if d, ok := os.LookupEnv("WinDir"); ok { 39 p := d + `\system32\cmd.exe` 40 if s, err := os.Stat(p); err == nil && !s.IsDir() { 41 return p 42 } 43 } 44 return `%WinDir%\system32\cmd.exe` 45 } 46 47 // UserHomeDir returns the current user's home directory. 48 // 49 // On Unix, including macOS, it returns the $HOME environment variable. 50 // On Windows, it returns %USERPROFILE%. 51 // On Plan 9, it returns the $home environment variable. 52 // On JS/WASM it returns and empty string. 53 // 54 // Golang compatibility helper function. 55 func UserHomeDir() string { 56 return os.Getenv("USERPROFILE") 57 }