小编use*_*807的帖子

无需源代码即可调试/排除 Windows 应用程序的故障

几天前,我在工作中遇到了这个问题,我想知道有没有办法从场景中挖掘出更多的数据,而不是去微软。已经有很多这样的案例,作为 Windows 开发人员,我想探索一下,获取大部分信息的最佳/最佳方式是什么。我来描述一下情况:

  1. 使用某些设置(涉及 cmyk 颜色空间)进行打印时,Office 应用程序会抛出一个对话框错误,其中描述错误。“文件 %s 无法打开,因为它被其他应用程序锁定”。它不提供文件名,事件查看器也不提供。打印中止。

  2. 在使用时procmon,我们发现当 apiCreatefileMapping被相关进程调用时,在几个文件上出现“文件锁定错误”,例如 office 应用程序、假脱机程序、splwow64.exe(是的,它是 64 位系统,应用程序是 32 位)。

  3. 当不涉及 splwow64 时,问题不存在,这意味着在 64 位操作系统上使用 64 位应用程序。

我想知道在这种情况下哪些工具对获取更多信息有用。这包括在需要时将 MS 符号与 windbg 和调试程序集一起使用。基本上我需要被锁定的文件名,它显示为 %s 和问题的根源。

assembly windbg reverse-engineering debug-symbols symbol-server

4
推荐指数
1
解决办法
975
查看次数

Psexec 和 UAC 问题

我正在使用 psexec 在 Windows 7 的远程机器上运行 exe。我需要 exe 以管理员权限运行,因为它需要更新远程系统中 HKLM 下的一些注册表。

在运行 psexec 时,我提供了远程系统上管理员帐户的凭据。当远程系统上的 UAC 关闭时,一切正常。

但是当 UAC 开启时,远程 exe 无法启动。

在已配置 exe 以使用“RequireAdministrator”的清单设置中。我期望的是在远程计算机上启动 exe 时看到 UAC 提示提升警告。虽然如果有某种方法可以绕过提示会很棒。

但不幸的是,exe 无法自行启动。有任何想法吗?

windows winapi psexec win32com

2
推荐指数
1
解决办法
9861
查看次数

SendMessage作为IPC?

以下代码将一些文本设置为打开的记事本窗口.我的问题是它如何安全地工作?

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机制?

c++ winapi

0
推荐指数
1
解决办法
802
查看次数