几天前,我在工作中遇到了这个问题,我想知道有没有办法从场景中挖掘出更多的数据,而不是去微软。已经有很多这样的案例,作为 Windows 开发人员,我想探索一下,获取大部分信息的最佳/最佳方式是什么。我来描述一下情况:
使用某些设置(涉及 cmyk 颜色空间)进行打印时,Office 应用程序会抛出一个对话框错误,其中描述错误。“文件 %s 无法打开,因为它被其他应用程序锁定”。它不提供文件名,事件查看器也不提供。打印中止。
在使用时procmon,我们发现当 apiCreatefileMapping被相关进程调用时,在几个文件上出现“文件锁定错误”,例如 office 应用程序、假脱机程序、splwow64.exe(是的,它是 64 位系统,应用程序是 32 位)。
当不涉及 splwow64 时,问题不存在,这意味着在 64 位操作系统上使用 64 位应用程序。
我想知道在这种情况下哪些工具对获取更多信息有用。这包括在需要时将 MS 符号与 windbg 和调试程序集一起使用。基本上我需要被锁定的文件名,它显示为 %s 和问题的根源。
assembly windbg reverse-engineering debug-symbols symbol-server
我正在使用 psexec 在 Windows 7 的远程机器上运行 exe。我需要 exe 以管理员权限运行,因为它需要更新远程系统中 HKLM 下的一些注册表。
在运行 psexec 时,我提供了远程系统上管理员帐户的凭据。当远程系统上的 UAC 关闭时,一切正常。
但是当 UAC 开启时,远程 exe 无法启动。
在已配置 exe 以使用“RequireAdministrator”的清单设置中。我期望的是在远程计算机上启动 exe 时看到 UAC 提示提升警告。虽然如果有某种方法可以绕过提示会很棒。
但不幸的是,exe 无法自行启动。有任何想法吗?
以下代码将一些文本设置为打开的记事本窗口.我的问题是它如何安全地工作?
int _tmain(int argc, _TCHAR* argv[])
{
HWND hwnd = FindWindow(_T("Notepad"),_T("Untitled - Notepad"));
if(hwnd!=NULL)
{
wchar_t* pString = L"hi";
HWND hwndEdit = FindWindowEx(hwnd,NULL,_T("Edit"),NULL);
SendMessage(hwndEdit,WM_SETTEXT,0,(LPARAM)pString);
}
return 0;
Run Code Online (Sandbox Code Playgroud)
}
指针"pString"存在于当前进程空间的虚拟内存中,在notepad.exe的上下文中可能不是有效的内存地址.但奇怪的是它确实正确设置了文本,这意味着不仅指针在notepad.exe上下文但它也指向正确的字符串.这是怎么回事?
这是否意味着我们可以有效地使用SendMessage作为IPC机制?