G
Guest
Hi everybody,
Please look at this code, the rebooting/reset does not happen. Waht is
wrong with this code?
How to fixed this?
Code:
[StructLayout(LayoutKind.Sequential, Pack=1)]
private struct Luid //change to internal public accessor not working
{
public int Count;
public long pLuid;
public int Attr;
}
const int SE_PRIVILEGE_ENABLED = 0x2;
const int TOKEN_QUERY = 0x8;
const int TOKEN_ADJUST_PRIVILEGES = 0x20;
const int EWX_REBOOT = 0x2;
const int EWX_FORCE = 0x4;
const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
[DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true)]
internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool
disall,ref Luid newst, int
len, IntPtr prev, IntPtr relen);
[DllImport("user32.dll")]
static extern int ExitWindowsEx(int uFlags, int dwReason);
private void ActivatePrivileges()
{
Luid uID;
IntPtr ptrProcess = Process.GetCurrentProcess().Handle;
IntPtr ptrToken = IntPtr.Zero;
//Need to adjust the priviledge in order to shut down...
OpenProcessToken(ptrProcess, TOKEN_ADJUST_PRIVILEGES / TOKEN_QUERY,
ptrToken);
uID.Count = 1;
uID.pLuid = 0;
uID.Attr = SE_PRIVILEGE_ENABLED;
LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, uID.pLuid);
AdjustTokenPrivileges(ptrToken, false, uID, 0, IntPtr.Zero,
IntPtr.Zero); //Error Occurs
here
}
//Executing inside
private void btnReset_Click(object sender, System.EventArgs e)
{
ActivatePrivileges();
ExitWindowsEx(2, 0);//This does nothing
}
Den2005
Please look at this code, the rebooting/reset does not happen. Waht is
wrong with this code?
How to fixed this?
Code:
[StructLayout(LayoutKind.Sequential, Pack=1)]
private struct Luid //change to internal public accessor not working
{
public int Count;
public long pLuid;
public int Attr;
}
const int SE_PRIVILEGE_ENABLED = 0x2;
const int TOKEN_QUERY = 0x8;
const int TOKEN_ADJUST_PRIVILEGES = 0x20;
const int EWX_REBOOT = 0x2;
const int EWX_FORCE = 0x4;
const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
[DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true)]
internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool
disall,ref Luid newst, int
len, IntPtr prev, IntPtr relen);
[DllImport("user32.dll")]
static extern int ExitWindowsEx(int uFlags, int dwReason);
private void ActivatePrivileges()
{
Luid uID;
IntPtr ptrProcess = Process.GetCurrentProcess().Handle;
IntPtr ptrToken = IntPtr.Zero;
//Need to adjust the priviledge in order to shut down...
OpenProcessToken(ptrProcess, TOKEN_ADJUST_PRIVILEGES / TOKEN_QUERY,
ptrToken);
uID.Count = 1;
uID.pLuid = 0;
uID.Attr = SE_PRIVILEGE_ENABLED;
LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, uID.pLuid);
AdjustTokenPrivileges(ptrToken, false, uID, 0, IntPtr.Zero,
IntPtr.Zero); //Error Occurs
here
}
//Executing inside
private void btnReset_Click(object sender, System.EventArgs e)
{
ActivatePrivileges();
ExitWindowsEx(2, 0);//This does nothing
}
Den2005