+#ifdef NMRPFLASH_WINDOWS
+void require_admin()
+{
+ SID_IDENTIFIER_AUTHORITY auth = SECURITY_NT_AUTHORITY;
+ PSID adminGroup = NULL;
+ BOOL success = AllocateAndInitializeSid(
+ &auth, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
+ 0, 0, 0, 0, 0, 0, &adminGroup
+ );
+
+ if (success) {
+ if (CheckTokenMembership(NULL, adminGroup, &success)) {
+ if (!success) {
+ fprintf(stderr, "Error: must be run as administrator\n");
+ exit(1);
+ } else {
+ return;
+ }
+ }
+ FreeSid(adminGroup);
+ }
+
+ fprintf(stderr, "Warning: failed to check administrator privileges\n");
+}
+#else
+void require_admin()
+{
+ if (getuid() != 0) {
+ fprintf(stderr, "Error: must be run as root\n");
+ exit(1);
+ }
+}
+#endif
+