diff --git a/cmd/arcdps-log-uploader/main.go b/cmd/arcdps-log-uploader/main.go
index 82a82e0..090bad5 100644
--- a/cmd/arcdps-log-uploader/main.go
+++ b/cmd/arcdps-log-uploader/main.go
@@ -3,13 +3,12 @@
 package main
 
 import (
-	"os"
-
 	"github.com/lxn/walk"
 	log "github.com/sirupsen/logrus"
 	"github.com/xyaren/arcdps-log-uploader/cmd/arcdps-log-uploader/model"
 	"github.com/xyaren/arcdps-log-uploader/cmd/arcdps-log-uploader/ui"
 	"github.com/xyaren/arcdps-log-uploader/cmd/arcdps-log-uploader/utils"
+	"golang.org/x/sys/windows"
 )
 
 func main() {
@@ -39,6 +38,25 @@ func start() {
 }
 
 func runningWithAdminPrivileges() bool {
-	_, err := os.Open("\\\\.\\PHYSICALDRIVE0")
-	return err == nil
+	var sid *windows.SID
+
+	// Although this looks scary, it is directly copied from the
+	// official windows documentation. The Go API for this is a
+	// direct wrap around the official C++ API.
+	// See https://docs.microsoft.com/en-us/windows/desktop/api/securitybaseapi/nf-securitybaseapi-checktokenmembership
+	err := windows.AllocateAndInitializeSid(
+		&windows.SECURITY_NT_AUTHORITY,
+		2,
+		windows.SECURITY_BUILTIN_DOMAIN_RID,
+		windows.DOMAIN_ALIAS_RID_ADMINS,
+		0, 0, 0, 0, 0, 0,
+		&sid)
+	if err != nil {
+		log.Fatalf("SID Error: %s", err)
+		return false
+	}
+
+	token := windows.Token(0)
+	isAdmin, _ := token.IsMember(sid)
+	return token.IsElevated() || isAdmin
 }
diff --git a/go.mod b/go.mod
index e8090ca..22b721e 100644
--- a/go.mod
+++ b/go.mod
@@ -9,6 +9,7 @@ require (
 	github.com/lxn/win v0.0.0-20210218163916-a377121e959e
 	github.com/rhysd/go-github-selfupdate v1.2.3
 	github.com/sirupsen/logrus v1.8.1
+	golang.org/x/sys v0.0.0-20211124211545-fe61309f8881
 	golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11
 )
 
@@ -23,7 +24,6 @@ require (
 	golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871 // indirect
 	golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9 // indirect
 	golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect
-	golang.org/x/sys v0.0.0-20211124211545-fe61309f8881 // indirect
 	google.golang.org/appengine v1.6.7 // indirect
 	google.golang.org/protobuf v1.27.1 // indirect
 	gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect