【发布时间】:2008-09-23 17:12:07
【问题描述】:
我可以在 Vista 中模拟 C#/C++ 代码 Control+Alt+Delete 序列吗? 何时启用/禁用 UAC? 在 XP 中是如何实现的?
您能否提供一个适用于 Vista 的代码示例?
【问题讨论】:
标签: windows winapi windows-vista
我可以在 Vista 中模拟 C#/C++ 代码 Control+Alt+Delete 序列吗? 何时启用/禁用 UAC? 在 XP 中是如何实现的?
您能否提供一个适用于 Vista 的代码示例?
【问题讨论】:
标签: windows winapi windows-vista
用于模拟安全注意序列 (SAS) 的现有代码(大多数人将其称为 control alt delete 或 ctrl-alt-del)在 Windows Vista 中不再有效。微软似乎提供了一个库来导出一个名为 SimulateSAS() 的函数。它不是公开的,应该通过向 saslib@microsoft.com 发送邮件来请求它。
similar library 具有以下功能:
请注意,这个库不是免费的。同时有兴趣的可以联系info@simulatesas.com。
【讨论】:
请使用以下信息,“saslib@microsoft.com”已被弃用,不太可能得到任何回复。以下信息就足够了。
从 Windows 7 操作系统和随附的软件开发工具包 (SDK) 的公开可用性开始,Vista 应用程序的 SAS 功能将只能通过 Windows SDK 提供。 SASLIB包的email发布支持,saslib将停止使用。
有关如何下载平台 SDK 的信息,请访问 Microsoft 下载中心页面上的“Windows SDK for Windows 7 and .Net Framework 3.5 SP1”,链接如下: http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en.
安装此 SDK 后,您会在 redist 目录中找到可再发行的 sas.dll:
\Program Files\Microsoft SDKs\Windows\v7.0\redist\x86\sas.dll
\Program Files\Microsoft SDKs\Windows\v7.0\redist\amd64\sas.dll
\Program Files\Microsoft SDKs\Windows\v7.0\redist\ia64\sas.dll
【讨论】:
我已将此网址添加为书签,希望对您有所帮助。 http://softltd.wordpress.com/simulate-ctrl-alt-del-in-windows-vista-7-and-server-2008/
【讨论】:
PostMessage(HWND_BROADCAST, WM_HOTKEY, 0, MAKELONG(MOD_ALT | MOD_CONTROL, VK_DELETE));
你从 user32 dll 获得 PostMessage
编辑:CodeProject article that has code for it
编辑:有一些 discussion from VNC 说明为什么这在 Vista 中不起作用以及如何设置 UAC 以允许它。
【讨论】:
你只需要从服务进程调用下一个代码
HDESK desktop = OpenDesktopW(L"Winlogon", 0, TRUE,
DESKTOP_CREATEMENU | DESKTOP_CREATEWINDOW | DESKTOP_ENUMERATE |
DESKTOP_HOOKCONTROL | DESKTOP_WRITEOBJECTS | DESKTOP_READOBJECTS |
DESKTOP_SWITCHDESKTOP | GENERIC_WRITE);
int result = SetThreadDesktop(desktop);
if (result)
{
HMODULE sasdll = LoadLibraryA("sas.dll");
if (sasdll)
{
typedef void(__stdcall * SendSAS_t)(BOOL);
SendSAS_t sendSAS = (SendSAS_t)GetProcAddress(sasdll, "SendSAS");
if (sendSAS)
sendSAS(FALSE);
}
}
CloseDesktop(desktop);
【讨论】: