X Tutup
Skip to content

Commit 6b7fded

Browse files
Add '--print-users-sid' command
1 parent 22e6f89 commit 6b7fded

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

src/elevate.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
#include <stdio.h>
33
#include <windows.h>
4+
#include <sddl.h>
45
#include <userenv.h>
56

67
#ifndef SEE_MASK_NOASYNC
@@ -263,6 +264,36 @@ int runas(int argc, char** argv) {
263264
return code;
264265
}
265266

267+
int printUsersSid () {
268+
DWORD arbitrarySize = 2048;
269+
270+
DWORD sidSize = arbitrarySize;
271+
PSID sid = malloc(sidSize);
272+
memset(sid, 0, sidSize);
273+
274+
int ret = CreateWellKnownSid(WinBuiltinUsersSid, NULL, sid, &sidSize);
275+
if (!ret) {
276+
wbail(127, "failed CreateWellKnownSid call");
277+
}
278+
279+
DWORD cchName = arbitrarySize;
280+
wchar_t *lpName = malloc(sizeof(wchar_t) * cchName);
281+
282+
DWORD cchReferencedDomainName = arbitrarySize;
283+
wchar_t *lpReferencedDomainName = malloc(sizeof(wchar_t) * cchReferencedDomainName);
284+
285+
SID_NAME_USE sidUse;
286+
287+
ret = LookupAccountSidW(NULL, sid, lpName, &cchName, lpReferencedDomainName, &cchReferencedDomainName, &sidUse);
288+
if (!ret) {
289+
wbail(127, "failed LookupAccountSid call");
290+
}
291+
292+
wprintf(L"%s\n", lpName);
293+
294+
return 0;
295+
}
296+
266297
/**
267298
* Inspired by / with some code from the following MIT-licensed projects:
268299
* - https://github.com/atom/node-runas
@@ -286,6 +317,8 @@ int main(int argc, char** argv) {
286317
return msiexec(argc, argv);
287318
} else if (strcmp("--runas", argv[1]) == 0) {
288319
return runas(argc, argv);
320+
} else if (strcmp("--print-users-sid", argv[1]) == 0) {
321+
return printUsersSid(argc, argv);
289322
} else {
290323
return elevate(argc, argv);
291324
}

0 commit comments

Comments
 (0)
X Tutup