Форум: "Начинающим";
Текущий архив: 2011.01.30;
Скачать: [xml.tar.bz2];
ВнизWindows 7 Найти похожие ветки
← →
faiwer © (2010-11-12 18:31) [0]Доброго времени суток. Возник вопрос, так сказать, касательно прав доступа в вин7.
1. Есть программа-сервер. Должна запускаться автоматически вместе с ОС, и ей нужны права администратора (чтение и запись в HKLM и право на запись в своей папке, а не в аппдата). Суть программы - делает бэкап БД. Как лучше это реализовать? На данный момент просто задал ей "выполнять эту программу от имени администратора", но я сделал это "ручками", а надо как то встроить в инсталлер. Инсталлер запускается от имени администратора. Как лучше поступить в такой ситуации?
2. Есть программа-клиент, прав администратора не нужно. Но нужно где то хранить настройки для all-user (не для каждого в отдельности, а сразу для всех). Есть ли права у любого юзера на запись в "\Users\All Users". На своей машине проверить не могу, ибо с правами у меня давно какая то котовасия :) Или есть способ "правильнее"?
← →
faiwer © (2010-11-12 18:34) [1]Забыл уточнить. Программе-серверу нужны для работы права администратора вне зависимости от прав текущего пользователя. Ей это нужно как то разрешить при инсталляции, когда права есть на всё :)
← →
clickmaker © (2010-11-12 19:01) [2]1. Сервис
2. ini в папке программы
← →
DVM © (2010-11-12 19:03) [3]
> faiwer © (12.11.10 18:31)
> Суть программы - делает бэкап БД. Как лучше это реализовать?
Сервис? А вообще такая программа-сервис уже есть - планировщик задач, пущай он и запускает твою с нужными правами.
> Но нужно где то хранить настройки для all-user
CSIDL_COMMON_APPDATA или по-новому FOLDERID_ProgramData
← →
faiwer © (2010-11-12 19:05) [4]
> 1. Сервис
> 2. ini в папке программы
1. Good, почитаемс, давно хотел коснуться этой темы
2. В папке программы нельзя, ибо нет прав доступа, сейчас у меня как раз так и реализовано :)
> CSIDL_COMMON_APPDATA или по-новому FOLDERID_ProgramData
Спс, почитаемс...
← →
DVM © (2010-11-12 19:06) [5]
> 2. ini в папке программы
Самый удобный вариант, но если программа окажется в Program Files, ее настройки в Windows 7 окажутся черт знает где (в профиле пользователя где то там подпапка Virtual Store), и всем пользователям точно не будут доступны.
← →
DVM © (2010-11-12 19:14) [6]
> faiwer © (12.11.10 19:05) [4]
> Спс, почитаемс...
Дарю:
type
TKnownFolderID = TGUID;
const
// GUID: {62AB5D82-FDC1-4DC3-A9DD-070D1D495D97}
// Отображаемое имя: ProgramData
// Тип папки: Реальная
// Путь по-умолчанию: %ALLUSERSPROFILE% (%ProgramData%, %SystemDrive%\ProgramData)
// CSIDL аналог: CSIDL_COMMON_APPDATA
// Устаревшее имя: Application Data
// Устаревший путь: %ALLUSERSPROFILE%\Application Data
FOLDERID_ProgramData: TKnownFolderID = "{62AB5D82-FDC1-4DC3-A9DD-070D1D495D97}";
function GetKnownFolderPath(const ID: TKnownFolderID): WideString;
type
TSHGetKnownFolderPath = function(const rfid: TKnownFolderID; dwFlags: DWord;
hToken: THandle; var ppSzPath: LPWSTR) : HResult; stdCall;
var
hShell: HModule;
SHGetKnownFolderPath: TSHGetKnownFolderPath;
Buffer: LPWSTR;
begin
Result := "";
hShell := LoadLibrary("shell32.dll");
if hShell > 0 then
try
@SHGetKnownFolderPath := GetProcAddress(hShell, "SHGetKnownFolderPath");
if Assigned(SHGetKnownFolderPath) then
if Succeeded(SHGetKnownFolderPath(ID, 0, 0, Buffer)) then
try
Result := Buffer;
finally
CoTaskMemFree(Buffer);
end;
finally
FreeLibrary(hShell);
end;
end;
← →
clickmaker © (2010-11-12 19:14) [7]> Суть программы - делает бэкап БД
а вообще нафига какие-то примочки? средствами СУБД разве нельзя периодически бэкапить?
← →
faiwer © (2010-11-12 19:24) [8]
> а вообще нафига какие-то примочки? средствами СУБД разве
> нельзя периодически бэкапить?
Эмм.. СУБД Firebird. моя программа-сервер:
1. автоматически при запуске ОС делает бэкап
2. хранит некоторые количество бэкапов
3. делает бэкапы по требованию
4. восстанавливает БД из бэкапа
http://s012.radikal.ru/i319/1011/28/94e790fda5dc.jpg
В принципе можно поместить в планировщик какую-нибудь команду, которая будет делать бэкап, но в таком случае она будет переписывать существующий бэкап... Или я просто запутался
← →
DVM © (2010-11-12 19:54) [9]
> но в таком случае она будет переписывать существующий бэкап.
> .. Или я просто запутался
В планировщик надо поместить не команду, а программу, вот и пусть она делает как надо именно тебе, хошь переписывает хошь не переписывает
← →
faiwer © (2010-11-12 19:56) [10]
> В планировщик надо поместить не команду, а программу, вот
> и пусть она делает как надо именно тебе, хошь переписывает
> хошь не переписывает
Не, это как раз понятно. Так я и сделаю. Товарисч clickmaker намекает, что я пишу велосипед, и программа вообще не нужна
← →
DVM © (2010-11-12 20:35) [11]
> faiwer © (12.11.10 19:56) [10]
> и программа вообще не нужна
Да очень может быть, надо просто внимательно изучить, что может программа резервного копирования, которую планировщик может тоже запускать, у нее широкие возможности. Т.е тебе нужен не только стандартный планировщик но и стандартная же программа резервного копирования.
← →
Gu (2010-11-13 05:49) [12]http://delphimaster.net/view/2-1289530925/
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.01.30;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.003 c