MVV

|
Posted: Sat Oct 08, 2011 20:37 Post subject: |
|
|
CaptainFlint wrote: | Планируется непременнейшим образом. Конкретно юникодная сделана давным-давно чуть менее, чем полностью, просто я там начал добавлять поддержку вистовых симлинков, а оказалось, что их без повышения привилегий не создашь (а повышение привилегий — это до ужаса муторная вещь ). |
Ну не так и муторно повысить привилегии. Привилегия всего одна требуется. Вот код для получения (писал для NTLinks):
Code: | bool GetCreateSymlinkPrivileges() {
HANDLE hToken; TOKEN_PRIVILEGES tp;
bool result=0;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) {
tp.PrivilegeCount=1;
tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
if (LookupPrivilegeValue(0, SE_CREATE_SYMBOLIC_LINK_NAME, &tp.Privileges[0].Luid)) {
result=AdjustTokenPrivileges(hToken, 0, &tp, sizeof(TOKEN_PRIVILEGES), 0, 0)!=0 && !GetLastError();
}
CloseHandle(hToken);
}
return result;
} |
Пробуешь включить привилегию, не получилось - спрашиваешь юзера о повышении. Добро - запускаешь себя же с повышением и спец. ключом, чтобы при неудаче уже не запрашивать юзера о повышении (я не вдавался в подробности, как узнать, с повышением ли запущена прога). По идее, совсем не сложно. А этот ключ в ридми описываешь как "ключ отключения запроса повышения при неудаче".
А компилить можно так же на 6 студии, чтоб без зависимостей но отключить совместимость с вин98 (выравнивание секций в файле по 4 кило). _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|