added ability to rerun itself as admin should hopefully work and actually made window smaller
This commit is contained in:
13
admin/admin_linux.go
Normal file
13
admin/admin_linux.go
Normal 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
41
admin/admin_windows.go
Normal 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
16
main.go
@@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"s1d3sw1ped/cpms/admin"
|
||||
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/app"
|
||||
@@ -53,17 +54,26 @@ func loadConfig() *Config {
|
||||
return &cfg
|
||||
}
|
||||
|
||||
var cfg = loadConfig()
|
||||
var cfg *Config
|
||||
|
||||
func main() {
|
||||
if !admin.Admin() {
|
||||
if err := admin.RunSelfElevated(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
cfg = loadConfig()
|
||||
|
||||
ap := app.New()
|
||||
wp := ap.NewWindow("Cyberpunk Mod Switcher")
|
||||
wp.Resize(fyne.NewSize(768, 768))
|
||||
wp.Resize(fyne.NewSize(600, 1))
|
||||
wp.CenterOnScreen()
|
||||
|
||||
grid := container.NewVBox()
|
||||
scroll := container.NewVScroll(grid)
|
||||
scroll.SetMinSize(fyne.NewSize(-1, 768))
|
||||
scroll.SetMinSize(fyne.NewSize(-1, 400))
|
||||
|
||||
//load grid
|
||||
fillGrid(grid, wp)
|
||||
|
||||
Reference in New Issue
Block a user