Fórum Resolvi o Ctrl Alt Del no XP/2000 #185132
29/09/2003
0
resolvi o ctrl+alt+del no xp, criei a dll para substituir a msgina.dll, to fazendo alguns testes e vou tentar disponibilizar ainda hoje.
[]s,
Cleber
Clebertom
Curtir tópico
+ 0Posts
29/09/2003
Clebertom
Instrucoes:
1.Colocar a dll cblgina.dll dentro de windows\system32
2.Criar o valor no registro
lRegistry := TRegistry.Create;
Try
lRegistry.RootKey := HKEY_LOCAL_MACHINE;
lRegistry.OpenKey(´Software´, True);
lRegistry.OpenKey(´Microsoft´, True);
lRegistry.OpenKey(´Windows NT´, True);
lRegistry.OpenKey(´CurrentVersion´, True);
lRegistry.OpenKey(´Winlogon´, True);
lRegistry.WriteString(´GinaDLL´, ´cblgina.dll´)
Finally
lRegistry.CloseKey;
end;
3. Para desativar o ctrl+alt+del criar o valor no registro
lRegistry := TRegistry.Create;
Try
lRegistry.RootKey := HKEY_LOCAL_MACHINE;
lRegistry.OpenKey(´Software´, True);
lRegistry.OpenKey(´CBLSoftware´, True);
lRegistry.OpenKey(´CBLGina´, True);
lRegistry.WriteBool(´CtrlAltDel´, False) // Ctrl+Alt+Del Desativado
Finally
lRegistry.CloseKey;
end;
4. Só reiniciar a maquina
Obs. Para habilitar o ctrl+alt+del em qualquer momento é so alterar o valor ´CtrlAltDel´ para True:
lRegistry.WriteBool(´CtrlAltDel´, True) // Ctrl+Alt+Del Ativado
Eh isso ai, penei mas consegui desativar essa @#$¬^& de ctrl+alt+del
[]s,
Cleber
[b:cb19f71a64]Texto editado pelo Moderador - AZ[/b:cb19f71a64]
Gostei + 0
30/09/2003
Clebertom
[]s,
Cleber
Gostei + 0
30/09/2003
Bruno Conegundes
[/b]
Gostei + 0
30/09/2003
Clebertom
[]s,
Clebertom
library CBLGina;
{
Declaracoes da API em C apenas para referencia
BOOL WlxActivateUserShell(
PVOID pWlxContext,
PWSTR pszDesktopName,
PWSTR pszMprLogonScript,
PVOID pEnvironment
);
VOID WlxDisplayLockedNotice(
PVOID pWlxContext
);
VOID WlxDisplaySASNotice(
PVOID pWlxContext
);
BOOL WlxDisplayStatusMessage(
PVOID pWlxContext,
HDESK hDesktop,
DWORD dwOptions,
PWSTR pTitle,
PWSTR pMessage
);
BOOL WINAPI WlxGetConsoleSwitchCredentials(
PVOID pWlxContext,
PVOID pInfo
);
BOOL WlxGetStatusMessage(
PVOID pWlxContext,
DWORD* pdwOptions,
PWSTR pMessage,
DWORD dwBufferSize
);
BOOL WlxInitialize(
LPWSTR lpWinsta,
HANDLE hWlx,
PVOID pvReserved,
PVOID pWinlogonFunctions,
PVOID* pWlxContext
);
BOOL WlxIsLockOk(
PVOID pWlxContext
);
BOOL WlxIsLogoffOk(
PVOID pWlxContext
);
int WlxLoggedOnSAS(
PVOID pWlxContext,
DWORD dwSasType,
PVOID pReserved
);
int WlxLoggedOutSAS(
PVOID pWlxContext,
DWORD dwSasType,
PLUID pAuthenticationId,
PSID pLogonSid,
PDWORD pdwOptions,
PHANDLE phToken,
PWLX_MPR_NOTIFY_INFO pNprNotifyInfo,
PVOID* pProfile
);
typedef struct _WLX_MPR_NOTIFY_INFO <
PWSTR pszUserName;
PWSTR pszDomain;
PWSTR pszPassword;
PWSTR pszOldPassword;
> WLX_MPR_NOTIFY_INFO, *PWLX_MPR_NOTIFY_INFO;
VOID WlxLogoff(
PVOID pWlxContext
);
BOOL WlxNegotiate(
DWORD dwWinLogonVersion,
PDWORD pdwDllVersion
);
BOOL WlxNetworkProviderLoad(
PVOID pWlxContext,
PWLX_MPR_NOTIFY_INFO pNprNotifyInfo
);
BOOL WlxRemoveStatusMessage(
PVOID pWlxContext
);
BOOL WlxScreenSaverNotify(
PVOID pWlxContext,
BOOL* pSecure
);
VOID WlxShutdown(
PVOID pWlxContext,
DWORD ShutdownType
);
BOOL WlxStartApplication(
PVOID pWlxContext,
PWSTR pszDesktopName,
PVOID pEnvironment,
PWSTR pszCmdLine
);
int WlxWkstaLockedSAS(
PVOID pWlxContext,
DWORD dwSasType
);
}
uses
SysUtils,
Classes,
Windows,
Registry;
{$R *.RES}
const
msgina = ´msgina.dll´;
type WLX_MPR_NOTIFY_INFO = record
pszUserName,
pszDomain,
pszPassword,
pszOldPassword : PWideString;
end;
type PWLX_MPR_NOTIFY_INFO = ^WLX_MPR_NOTIFY_INFO;
type
PLUID = PLargeInteger;
PVOID = Pointer;
type TWlxLoggedOnSAS = function(pWlxContext : PVOID; dwSasType : DWORD; pReserved : PVOID) : integer; stdcall;
function WlxActivateUserShell(pWlxContext : PVOID; pszDesktopName : PWideString; pszMprLogonScript : PWideString; pEnvironment : PVOID) : BOOL; stdcall; external msgina name ´WlxActivateUserShell´;
procedure WlxDisplayLockedNotice(pWlxContext : PVOID); stdcall; external msgina name ´WlxDisplayLockedNotice´;
procedure WlxDisplaySASNotice(pWlxContext : PVOID); stdcall; external msgina name ´WlxDisplaySASNotice´;
function WlxDisplayStatusMessage(pWlxContext : PVOID; hDesktop : HDESK; dwOptions : DWORD; pTitle : PWideString; pMessage : PWideString) : BOOL; stdcall; external msgina name ´WlxDisplayStatusMessage´;
function WlxGetConsoleSwitchCredentials(pWlxContext : PVOID; pInfo : PVOID) : BOOL; stdcall; external msgina name ´WlxGetConsoleSwitchCredentials´;
function WlxGetStatusMessage(pWlxContext : PVOID; pdwOptions : PDWORD; pMessage : PWideString; dwBufferSize : DWORD) : BOOL; stdcall; external msgina name ´WlxGetStatusMessage´;
function WlxInitialize(lpWinsta : LPWSTR; hWlx : THandle; pvReserved : PVOID; pWinlogonFunctions : PVOID; pWlxContext : PVOID) : BOOL; stdcall; external msgina name ´WlxInitialize´;
function WlxIsLockOk(pWlxContext : PVOID) : BOOL; stdcall; external msgina name ´WlxIsLockOk´;
function WlxIsLogoffOk(pWlxContext : PVOID) : BOOL; stdcall; external msgina name ´WlxIsLogoffOk´;
// Essa funcao recebe o ctrl+alt+del
//function WlxLoggedOnSAS(pWlxContext : PVOID; dwSasType : DWORD; pReserved : PVOID) : integer; stdcall; external msgina name ´WlxLoggedOnSAS´;
function WlxLoggedOnSAS(pWlxContext : PVOID; dwSasType : DWORD; pReserved : PVOID) : integer; stdcall;
var
lGinaInst : HINST;
lWlxLoggedOnSAS : TWlxLoggedOnSAS;
lRegistry : TRegistry;
lCtrlAltDel : Boolean;
begin
lRegistry := TRegistry.Create;
Try
lRegistry.RootKey := HKEY_LOCAL_MACHINE;
lRegistry.OpenKey(´Software´, True);
lRegistry.OpenKey(´CBLSoftware´, True);
lRegistry.OpenKey(´CBLGina´, True);
Try
lCtrlAltDel := lRegistry.ReadBool(´CtrlAltDel´);
Except
lCtrlAltDel := True;
End;
Finally
lRegistry.CloseKey;
end;
Result := 0;
// Abrindo a Gina
lGinaInst := LoadLibrary(´msgina.dll´);
Try
if lGinaInst <> 0 then
begin
// Se o Ctrl+alt+del estiver ativo entao utilizar o procedimento da api
if lCtrlAltDel then
begin
@lWlxLoggedOnSAS := GetProcAddress(lGinaInst, ´WlxLoggedOnSAS´);
if Assigned(lWlxLoggedOnSAS) then
Result := lWlxLoggedOnSAS(pWlxContext, dwSasType, pReserved);
end else
Result := 2;
end;
Finally
if lGinaInst <> 0 then FreeLibrary(lGinaInst);
End;
end;
function WlxLoggedOutSAS(pWlxContext : PVOID; dwSasType : DWORD; pAuthenticationId : PLUID; pLogonSid : PSID; pdwOptions : PDWORD; phToken : PHANDLE; pNprNotifyInfo : PWLX_MPR_NOTIFY_INFO; pProfile : PVOID) : integer; stdcall; external msgina name ´WlxLoggedOutSAS´;
procedure WlxLogoff(pWlxContext : PVOID); stdcall; external msgina name ´WlxLogoff´;
function WlxNegotiate(dwWinLogonVersion : DWORD; pdwDllVersion : PDWORD) : BOOL; stdcall; external msgina name ´WlxNegotiate´;
function WlxNetworkProviderLoad(pWlxContext : PVOID; pNprNotifyInfo : PWLX_MPR_NOTIFY_INFO) : BOOL; stdcall; external msgina name ´WlxNetworkProviderLoad´;
function WlxRemoveStatusMessage(pWlxContext : PVOID) : BOOL; stdcall; external msgina name ´WlxRemoveStatusMessage´;
function WlxScreenSaverNotify(pWlxContext : PVOID; pSecure : PBOOL) : BOOL; stdcall; external msgina name ´WlxScreenSaverNotify´;
procedure WlxShutdown(pWlxContext : PVOID; ShutdownType : DWORD); stdcall; external msgina name ´WlxShutdown´;
function WlxStartApplication(pWlxContext : PVOID; pszDesktopName : PWideString; pEnvironment : PVOID; pszCmdLine : PWideString) : BOOL; stdcall; external msgina name ´WlxStartApplication´;
function WlxWkstaLockedSAS(pWlxContext : PVOID; dwSasType : DWORD) : integer; stdcall; external msgina name ´WlxWkstaLockedSAS´;
exports
WlxActivateUserShell,
WlxDisplayLockedNotice,
WlxDisplaySASNotice,
WlxDisplayStatusMessage,
WlxGetConsoleSwitchCredentials,
WlxGetStatusMessage,
WlxInitialize,
WlxIsLockOk,
WlxIsLogoffOk,
WlxLoggedOnSAS,
WlxLoggedOutSAS,
WlxLogoff,
WlxNegotiate,
WlxNetworkProviderLoad,
WlxRemoveStatusMessage,
WlxScreenSaverNotify,
WlxShutdown,
WlxStartApplication,
WlxWkstaLockedSAS;
begin
end.
Gostei + 0
30/09/2003
Clebertom
[]s,
Clebertom
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)