我使用的是简单的代码Test.c-
#include<stdio.h>
int main()
{
printf("hellon");
while(1);
}
我通过cl.exe编译器编译这个代码并生成Test.exe。现在我有两种方法来打开Test.exe。第一种是简单地双击并打开它。在这种情况下,如果我检查Windbg(文件->附加到进程),它会显示
Session: 1 User: .......
现在,如果我用管理权限从cmd打开Test.exe并再次检查Windbg,它会显示
Error 0xD0000022
我认为这是一个访问违规的错误,之所以会发生这种情况,是因为cmd(admin)进程不允许其子Test.exe具有某些访问权限,我不知道这些访问权限是什么。
是否有任何api允许访问并删除此错误。我尝试了这些api,但什么都没发生-
GetCurrentProcess(); //to get the pseudo handle of current process
SetSecurityInfo(ph,SE_SERVICE,BACKUP_SECURITY_INFORMATION,NULL,NULL,NULL,NULL);
我还以两种方式打开了safari浏览器,结果与Test.exe相同。请告诉我。
我认为这是一个访问违规的错误,而且正在发生因为cmd(admin)进程不允许对其child Test.exe
不完全是。使用管理员权限运行WinDBG,然后问题就会消失。