المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : How can program tell that itself is running as admin?



C++ Programming
10-01-2011, 05:22 PM
Hello people I have the following the code written in C++, converted from Vb.net to C++ from a program, the following code tells the user via message box if the program is running as an admin, see below

Object ^identity = WindowsIdentity::GetCurrent(); WindowsPrincipal ^principal = gcnew WindowsPrincipal(identity); bool isElevated = principal->IsInRole(WindowsBuiltInRole::Administrator); try { if (isElevated == true) { } else { MessageBox::Show("WARNING: Program not running as administrator!", "Credential Error", MessageBoxButtons::OK, MessageBoxIcon::Error); } } catch (Exception ^ex) { MessageBox::Show("This program cannot run as performed because your system does not support admin rights, program now terminating from computer memory.", ".Net Framework Error", MessageBoxButtons::OK, MessageBoxIcon::Error); Environment::Exit(1); }
When this block of code was executed with my program, I get the following error message (In double quotations):

"error C2664: 'System::Security::Principal::WindowsPrincipal::WindowsPrincipal(System::Security::Principal::Window sIdentity ^)' : cannot convert parameter 1 from 'System::Object ^' to 'System::Security::Principal::WindowsIdentity ^'"

the remaining error messages are (In double quotations):

"1> No user-defined-conversion operator available, or
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast"


Could anyone point out something that I could edit that could make the compiler accept or work, any suggestions or personal solutions are appreciated http://www.barakasoft.com/script/Forums/Images/smiley_smile.gif .