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"
|
"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)
|
||||||
|
|||||||
Reference in New Issue
Block a user