mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 22:02:58 -06:00
.uppdev
git-svn-id: svn://ultimatepp.org/upp/trunk@7814 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
ec59fc6e36
commit
19dc003fcc
2 changed files with 61 additions and 0 deletions
9
uppdev/Win32Admin/Win32Admin.upp
Normal file
9
uppdev/Win32Admin/Win32Admin.upp
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
uses
|
||||
CtrlLib;
|
||||
|
||||
file
|
||||
main.cpp;
|
||||
|
||||
mainconfig
|
||||
"" = "GUI SSE2";
|
||||
|
||||
52
uppdev/Win32Admin/main.cpp
Normal file
52
uppdev/Win32Admin/main.cpp
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
#include <CtrlLib/CtrlLib.h>
|
||||
|
||||
#include <Shellapi.h>
|
||||
|
||||
using namespace Upp;
|
||||
|
||||
bool IsAdmin()
|
||||
{
|
||||
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
|
||||
PSID AdministratorsGroup;
|
||||
// Initialize SID.
|
||||
if( !AllocateAndInitializeSid( &NtAuthority,
|
||||
2,
|
||||
SECURITY_BUILTIN_DOMAIN_RID,
|
||||
DOMAIN_ALIAS_RID_ADMINS,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
&AdministratorsGroup))
|
||||
{
|
||||
// Initializing SID Failed.
|
||||
return false;
|
||||
}
|
||||
// Check whether the token is present in admin group.
|
||||
BOOL IsInAdminGroup = FALSE;
|
||||
if( !CheckTokenMembership( NULL,
|
||||
AdministratorsGroup,
|
||||
&IsInAdminGroup ))
|
||||
{
|
||||
// Error occurred.
|
||||
IsInAdminGroup = FALSE;
|
||||
}
|
||||
// Free SID and return.
|
||||
FreeSid(AdministratorsGroup);
|
||||
|
||||
return IsInAdminGroup;
|
||||
}
|
||||
|
||||
GUI_APP_MAIN
|
||||
{
|
||||
if(IsAdmin()) {
|
||||
RLOG("Now I am admin, everything is fine.");
|
||||
PromptOK("I am an admin!");
|
||||
}
|
||||
else {
|
||||
RLOG("Not an admin, starting as admin");
|
||||
PromptOK("Not an admin, running as admin");
|
||||
ShellExecute(NULL, "runas", GetExeFilePath(), 0, 0, SW_SHOWNORMAL);
|
||||
return;
|
||||
}
|
||||
|
||||
RLOG("Doing admin stuff...");
|
||||
getchar();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue