diff --git a/CHANGELOG.md b/CHANGELOG.md
index 99af1288..44367b94 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
### Changed
- improved compatibility template for Privacy Enhanced box types (thanks offhub) [#2899](https://github.com/sandboxie-plus/Sandboxie/pull/2899)
+- improved signature error message [#2931](https://github.com/sandboxie-plus/Sandboxie/issues/2931)
### Fixed
- fixed Qt6 issues in ARM64 build
diff --git a/Sandboxie/core/drv/session.c b/Sandboxie/core/drv/session.c
index 389a4041..57c4f1f2 100644
--- a/Sandboxie/core/drv/session.c
+++ b/Sandboxie/core/drv/session.c
@@ -341,7 +341,7 @@ _FX NTSTATUS Session_Api_Leader(PROCESS *proc, ULONG64 *parms)
if (proc)
status = STATUS_NOT_IMPLEMENTED;
else if (!MyIsCallerSigned())
- status = STATUS_ACCESS_DENIED;
+ status = STATUS_INVALID_SIGNATURE; // STATUS_ACCESS_DENIED
else {
session = Session_Get(TRUE, -1, &irql);
diff --git a/SandboxiePlus/SandMan/SandMan.cpp b/SandboxiePlus/SandMan/SandMan.cpp
index 32f1c06f..2302d73d 100644
--- a/SandboxiePlus/SandMan/SandMan.cpp
+++ b/SandboxiePlus/SandMan/SandMan.cpp
@@ -2443,17 +2443,21 @@ SB_RESULT(void*) CSandMan::ConnectSbie()
SB_STATUS CSandMan::ConnectSbieImpl()
{
SB_STATUS Status = theAPI->Connect(g_PendingMessage.isEmpty(), theConf->GetBool("Options/UseInteractiveQueue", true));
-
- if (Status.GetStatus() == 0xC0000038L /*STATUS_DEVICE_ALREADY_ATTACHED*/) {
- OnLogMessage(tr("CAUTION: Another agent (probably SbieCtrl.exe) is already managing this Sandboxie session, please close it first and reconnect to take over."));
- return SB_OK;
- }
-
+
if (!g_PendingMessage.isEmpty()) {
OnMessage(g_PendingMessage);
PostQuitMessage(0);
}
+ if (Status.GetStatus() == 0xC0000038L /*STATUS_DEVICE_ALREADY_ATTACHED*/) {
+ OnLogMessage(tr("CAUTION: Another agent (probably SbieCtrl.exe) is already managing this Sandboxie session, please close it first and reconnect to take over."));
+ Status = SB_OK;
+ }
+ else if (Status.GetStatus() == 0xC000A000L /*STATUS_INVALID_SIGNATURE*/) {
+ QMessageBox::critical(this, "Sandboxie-Plus", tr("ERROR: The Sandboxie-Plus Manager (SandMan.exe) does not have a valid signature (SandMan.exe.sig). Please download a trusted release from the official Download page."));
+ Status = SB_OK;
+ }
+
return Status;
}