我正在寻找名为"MyApp.exe"的进程,我想确保获得特定用户拥有的进程.
我使用以下代码获取进程列表:
Process[] processes = Process.GetProcessesByName("MyApp");
Run Code Online (Sandbox Code Playgroud)
这给了我一个进程列表,但是在Process类中似乎没有办法确定谁拥有该进程?有关如何做到这一点的任何想法?
我有一个程序,在极少数情况下只需要提升到Admin,所以我不想设置我的清单以要求永久性提升.
我怎样才能在我需要时以编程方式请求提升?
我正在使用C#
我希望枚举系统中的所有桌面并获取该桌面的登录用户名.到目前为止,我有以下代码snippit作为获取HDESK句柄并尝试确定与其关联的用户名(如果有)的示例,但对LookupAccountSid的调用失败,ERROR_NONE_MAPPED("帐户名和安全ID之间没有映射是完成").
HDESK desk = OpenDesktop( "Default", 0, FALSE, READ_CONTROL | DESKTOP_READOBJECTS );
DWORD size = 4096;
SID * sid = (SID *)malloc( size );
GetUserObjectInformation( desk , UOI_USER_SID, sid, size, &size );
char name[512], domain[512];
int namesz = 512, domainsz = 512;
LookupAccountSid( NULL, sid, &name, &namesz, &domain, &domainsz, &s);
Run Code Online (Sandbox Code Playgroud)
这可能是因为我通过GetUserObjectInformation而不是用户SID提取登录SID.如果可以,我可以将其转换为登录用户SID?
任何人都可以指出我正确的方向来获取任意桌面的登录用户名(通过它各自的HDESK或HNWD手柄,甚至是台式机的HWINSTA手柄)?提前致谢.