From 7a0680c2cbe68b01028c7481951873ec8984f01e Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sun, 17 Dec 2023 23:16:55 +0100 Subject: [PATCH] impr: Add warning to disk provider if ImHex is not running elevated --- .../include/content/providers/disk_provider.hpp | 1 + plugins/builtin/romfs/lang/en_US.json | 1 + .../source/content/providers/disk_provider.cpp | 16 +++++++++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/plugins/builtin/include/content/providers/disk_provider.hpp b/plugins/builtin/include/content/providers/disk_provider.hpp index b2d2f0c36..d994f9583 100644 --- a/plugins/builtin/include/content/providers/disk_provider.hpp +++ b/plugins/builtin/include/content/providers/disk_provider.hpp @@ -60,6 +60,7 @@ namespace hex::plugin::builtin { std::set m_availableDrives; std::fs::path m_path; std::string m_friendlyName; + bool m_elevated = false; #if defined(OS_WINDOWS) void *m_diskHandle = reinterpret_cast(-1); diff --git a/plugins/builtin/romfs/lang/en_US.json b/plugins/builtin/romfs/lang/en_US.json index 22c27cf6d..327f96790 100644 --- a/plugins/builtin/romfs/lang/en_US.json +++ b/plugins/builtin/romfs/lang/en_US.json @@ -515,6 +515,7 @@ "hex.builtin.provider.error.open": "Failed to open provider: {}", "hex.builtin.provider.disk": "Raw Disk Provider", "hex.builtin.provider.disk.disk_size": "Disk Size", + "hex.builtin.provider.disk.elevation": "Accessing raw disks most likely requires elevated privileges", "hex.builtin.provider.disk.reload": "Reload", "hex.builtin.provider.disk.sector_size": "Sector Size", "hex.builtin.provider.disk.selected_disk": "Disk", diff --git a/plugins/builtin/source/content/providers/disk_provider.cpp b/plugins/builtin/source/content/providers/disk_provider.cpp index be7203220..4fda7edd4 100644 --- a/plugins/builtin/source/content/providers/disk_provider.cpp +++ b/plugins/builtin/source/content/providers/disk_provider.cpp @@ -1,10 +1,11 @@ #if !defined(OS_WEB) -#include + #include "content/providers/disk_provider.hpp" #include +#include #include #include #include @@ -15,6 +16,7 @@ #include #include +#include #include @@ -428,12 +430,20 @@ namespace hex::plugin::builtin { bool DiskProvider::drawLoadInterface() { #if defined(OS_WINDOWS) - if (this->m_availableDrives.empty()) + if (this->m_availableDrives.empty()) { this->reloadDrives(); + this->m_elevated = hex::isProcessElevated(); + } + + if (!this->m_elevated) { + ImGui::PushTextWrapPos(0); + ImGuiExt::TextFormattedColored(ImGuiExt::GetCustomColorU32(ImGuiCustomCol_LoggerError), ICON_VS_SHIELD "{}", "hex.builtin.provider.disk.elevation"_lang); + ImGui::PopTextWrapPos(); + ImGui::NewLine(); + } ImGui::PushItemWidth(300_scaled); if (ImGui::BeginListBox("hex.builtin.provider.disk.selected_disk"_lang)) { - ImGui::PushID(1); for (const auto &[path, friendlyName] : this->m_availableDrives) { if (ImGui::Selectable(friendlyName.c_str(), this->m_path == path)) {