added ability to rerun itself as admin should hopefully work and actually made window smaller

This commit is contained in:
2023-12-14 20:25:51 -06:00
parent 0553968907
commit cf65351d4e
3 changed files with 67 additions and 3 deletions

13
admin/admin_linux.go Normal file
View File

@@ -0,0 +1,13 @@
package admin
import "errors"
var ErrNotImplemented = errors.New("not implemented on linux")
func RunSelfElevated() error {
return ErrNotImplemented
}
func Admin() bool {
return true
}

41
admin/admin_windows.go Normal file
View File

@@ -0,0 +1,41 @@
package admin
import (
"fmt"
"os"
"strings"
"syscall"
"golang.org/x/sys/windows"
)
func RunSelfElevated() error {
verb := "runas"
exe, _ := os.Executable()
cwd, _ := os.Getwd()
args := strings.Join(os.Args[1:], " ")
verbPtr, _ := syscall.UTF16PtrFromString(verb)
exePtr, _ := syscall.UTF16PtrFromString(exe)
cwdPtr, _ := syscall.UTF16PtrFromString(cwd)
argPtr, _ := syscall.UTF16PtrFromString(args)
var showCmd int32 = 1 //SW_NORMAL
err := windows.ShellExecute(0, verbPtr, exePtr, argPtr, cwdPtr, showCmd)
if err != nil {
fmt.Println(err)
}
return nil
}
func Admin() bool {
_, err := os.Open("\\\\.\\PHYSICALDRIVE0")
if err != nil {
fmt.Println("admin no")
return false
}
fmt.Println("admin yes")
return true
}

16
main.go
View File

@@ -4,6 +4,7 @@ import (
"fmt" "fmt"
"os" "os"
"path/filepath" "path/filepath"
"s1d3sw1ped/cpms/admin"
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
"fyne.io/fyne/v2/app" "fyne.io/fyne/v2/app"
@@ -53,17 +54,26 @@ func loadConfig() *Config {
return &cfg return &cfg
} }
var cfg = loadConfig() var cfg *Config
func main() { func main() {
if !admin.Admin() {
if err := admin.RunSelfElevated(); err != nil {
panic(err)
}
os.Exit(0)
}
cfg = loadConfig()
ap := app.New() ap := app.New()
wp := ap.NewWindow("Cyberpunk Mod Switcher") wp := ap.NewWindow("Cyberpunk Mod Switcher")
wp.Resize(fyne.NewSize(768, 768)) wp.Resize(fyne.NewSize(600, 1))
wp.CenterOnScreen() wp.CenterOnScreen()
grid := container.NewVBox() grid := container.NewVBox()
scroll := container.NewVScroll(grid) scroll := container.NewVScroll(grid)
scroll.SetMinSize(fyne.NewSize(-1, 768)) scroll.SetMinSize(fyne.NewSize(-1, 400))
//load grid //load grid
fillGrid(grid, wp) fillGrid(grid, wp)