ПрограммированиеФорумОбщее

потестите прогу Launcher для движка + [начиная с 4-5 страницы - епопея с правами доступа] (5 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#60
23:49, 2 авг 2011

TirexiK
> Тебе надо на делфинарий перевести, а мне на С/С++ (win32).
ну если это просто прога открывающая доступ к папке в которой она находится, то нет разницы на чем она написана, главное с инсталера ее вызвать...
ты уже начал ее писать? может поделишся? =)
или мне патом поделится?

#61
23:53, 2 авг 2011

http://msdn.microsoft.com/en-us/library/aa379575(v=vs.85).aspx
оно и в дельфи и в C++....

#62
0:21, 3 авг 2011

Аврелий
> ты уже начал ее писать? может поделишся? =)
Не начал ещё :(

Аврелий
> http://msdn.microsoft.com/en-us/library/aa379575(v=vs.85).aspx
> оно и в дельфи и в C++....
Ну вот, вроде больше ничего и не надо.
За ссылку, кстати, спасибо - искать не надо :)

#63
0:27, 3 авг 2011

TirexiK
> Не начал ещё :(
я вот начал...
>За ссылку, кстати, спасибо - искать не надо :)
еще как надо =(

#64
13:52, 3 авг 2011

актуальные вопорсы:

1) нужно ли доставать адрес UserName\ApplicationData в UNICODE? предполагаю что на многих европейских компах UserName - это то что написал юзверь на своем родном языке... хотя почему то мне кажется что там только англицкий и кирилица =\

2) изменение прав делаю с помощью Cacls... в C++ это:
system("cacls . /E /T /C /G Administrators:F"); //откроет админам FullControl
такой способ вобще работоспособен на вин7/виста? на XP у меня работает.

3) имя администратора / пользователя зависит от языка операционки...
system("cacls . /E /T /C /G Administrators:F");
не будет работать на руской винде, там надо
system("cacls . /E /T /C /G Администраторы:F");

так же для "Everyone" = "Все", "Users" = "Пользователи"... и как я подозреваю на разных языках оно по разному.
для этого:
во первых юзать WCHAR
_wsystem(...);
во вторых, мы не можем знать как "Админстраторы" будет уругвайском, поэтому нам нужно достать имена нужных юзеров из системы.
для этого нужен код такой:

SID_NAME_USE sidNameUse;
    wchar_t szAccName[256];
    wchar_t szDomName[256];
    DWORD dwNameSize = sizeof(szAccName)/sizeof(szAccName[0]);
    DWORD dwDomSize = sizeof(szDomName)/sizeof(szDomName[0]);
    PSID pSid;
    SID_IDENTIFIER_AUTHORITY siaWorld = SECURITY_WORLD_SID_AUTHORITY;
    AllocateAndInitializeSid(&siaWorld, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &pSid);
    LookupAccountSid(NULL, pSid, szAccName, &dwNameSize, szDomName, &dwDomSize, &sidNameUse);
    FreeSid(pSid);

но пока что собрать рабочий вариант с WCHAR не удалось...

я нигде не ошибся?

#65
14:36, 3 авг 2011

собрал пока что для Administrators / Everyone... кувыряю Users / Creator Owner...

#66
15:56, 3 авг 2011

Какие траблы всплывают, офигеть...
Я бы рад подключиться - две головы лучше, но на работе кранч, мать его...

#67
16:54, 3 авг 2011

Аврелий
Administrators / Users / Creator Owner это то тебе зачем, тебе только EveryOne вроде нужен.

>ПРИМЕЧАНИЕ. CACLS считается устаревшей, рекомендуется использовать ICACLS.
Думаю понятно

P.S. Посмотри, возможно там тотже трюк что и с папкой Users (она всегда такая, а вот в Explorer это и пользователи и что хочеш бывает)

#68
18:25, 3 авг 2011

Аврелий
Вот кое-что удалось нарыть, может помочь.

http://msdn.microsoft.com/en-us/library/aa382503%28v=VS.85%29.aspx
и
http://msdn.microsoft.com/en-us/library/aa372868%28VS.85%29.aspx


> 1) нужно ли доставать адрес UserName\ApplicationData в UNICODE? предполагаю что
> на многих европейских компах UserName - это то что написал юзверь на своем
> родном языке... хотя почему то мне кажется что там только англицкий и кирилица
> =\

Надо UNICODE.

> 3) имя администратора / пользователя зависит от языка операционки...
> system("cacls . /E /T /C /G Administrators:F");
> не будет работать на руской винде, там надо
> system("cacls . /E /T /C /G Администраторы:F");

Имя администратора не зависит ни от чего - оно просто может быть произвольным. Лучше не рассчитывать на какие-то строгие идентификаторы, когда работаешь с людьми. Чтобы с этим не путаться, существуют человеконечитаемые идентификаторы, базирующиеся на UUID. Через них можно идентифицировать встроенные группы.

#69
21:59, 3 авг 2011

посоны, а в мсдн вы принципиально инфу по теме находить не хотите например?

http://msdn.microsoft.com/en-us/library/aa379609%28v=VS.85%29.aspx

#70
22:41, 3 авг 2011

источники подтвердили что адрес Application Data должен быть в UTF-16 / UTF-8 ну типо юникод. (если нужно вывести строкой полный адрес)
другой источник посоветовал делать так:

If FileType(GetEnv ("appdata") + "/game/test.txt")=1 Then DeleteFile (GetEnv ("appdata") + "/game/test.txt")

тогда юникод не нужен.

#71
22:48, 3 авг 2011

хотя....
char *getenv(
  const char *varname
);

wchar_t *_wgetenv(
  const wchar_t *varname
);
оно же char возвратит и всеравно сфейлит, не? я запутался уже..

#72
23:03, 3 авг 2011

Аврелий
> тогда юникод не нужен.
Просто там вполне может быть хоть на арабском, хоть на иврите - нужен unicode.

Надо ещё полазить по ссылке от мистера x :)

#73
23:53, 3 авг 2011

Bishop
> тебе только EveryOne вроде нужен.
ну какбы в SC2 проставлено имено адмеину, криейтор овнеру и юзерам... че они Everyone не сделали тогда? =)

#74
0:01, 4 авг 2011

Аврелий
> ну какбы в SC2 проставлено имено адмеину, криейтор овнеру и юзерам... че они
> Everyone не сделали тогда? =)
Ребята, в иногда поражаете. Ну разве не пофиг как сделали в SC2? Вам же не бездумно скопировать надо. Да действительно там сделано пользователям (создатель-владелец это пользователь установивший игру (админов то может тоже быть много)), но можно и everyone (типа все и пользователи и админы и гости, кроме того бывают еще и спец пользователи для всяких там IIS (только у рядовых пользователей такого прото нету))

Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.