Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.004 c
2-1289186027
Gu
2010-11-08 06:13
2011.01.30
Определить консольное приложение


2-1289628270
Gu
2010-11-13 09:04
2011.01.30
TreeView, имя текущего элемента


2-1289652658
12
2010-11-13 15:50
2011.01.30
Напомните о контрлах. InsertControl vs Parent


15-1285267773
Rouse_
2010-09-23 22:49
2011.01.30
Немного музыки


15-1287347344
Юрий
2010-10-18 00:29
2011.01.30
С днем рождения ! 18 октября 2010 понедельник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский