هل يوجد مجلد في كل من WinXP وWinVista يتمتع جميع المستخدمين بأذونات الكتابة إليه؟

StackOverflow https://stackoverflow.com/questions/81686

  •  09-06-2019
  •  | 
  •  

سؤال

لدينا تطبيق NET يتم تثبيته في مجلد Program Files.يكتب التطبيق نفسه بعض الملفات وينشئ بعض الأدلة إلى مجلد التطبيق الخاص به.ولكن عندما يحاول مستخدم Windows العادي استخدام تطبيقنا، فإنه يتعطل لأن هذا المستخدم ليس لديه إذن بالكتابة إلى مجلد التطبيق.هل يوجد أي مجلد في كل من WinXP وWinVista يتمتع جميع المستخدمين بأذونات الكتابة إليه بشكل افتراضي؟كل مجلد المستخدم أو شيء من هذا القبيل؟

هل كانت مفيدة؟

المحلول

لا يوجد مثل هذا المجلد.

ولكن يمكنك إنشاء واحدة.

يوجد CSIDL_COMMON_APPDATA والذي في Vista يعين %ProgramData% (c:\ProgramData) وفي XP يعين c:\Documents and Settings\AllUsers\Application Data

لا تتردد في إنشاء مجلد هناك في برنامج التثبيت الخاص بك وتعيين قائمة التحكم بالوصول (ACL) حتى يتمكن الجميع من الكتابة إلى هذا المجلد.

ضع في اعتبارك أنه تم تطبيق COMMON_APPDATA في الإصدار 5 من مكتبة عناصر التحكم العامة مما يعني أنه متوفر في نظام التشغيل Windows 2000 والإصدارات الأحدث.في NT4، يمكنك إنشاء هذا المجلد في دليل التثبيت الخاص بك وفي نظام التشغيل Windows 98 والإصدارات الأقدم، لا يهم على أي حال نظرًا لعدم وجود نظام أذونات لهذه الأنظمة على أي حال.

فيما يلي بعض نماذج التعليمات البرمجية InnoSetup لإنشاء هذا المجلد:

[Dirs]
Name: {code:getDBPath}; Flags: uninsalwaysuninstall; Permissions: authusers-modify

[Code]


function getDBPath(Param: String): String;
var
   Version: TWindowsVersion;
begin
  Result := ExpandConstant('{app}\data');
  GetWindowsVersionEx(Version);
  if (Version.Major >= 5) then begin
    Result := ExpandConstant('{commonappdata}\myprog');
  end;
end;

نصائح أخرى

لست متأكدًا من وجود مسار واحد يتمتع جميع المستخدمين غير المسؤولين بالإذن بالكتابة إليه.

أعتقد أن الصحيح سيكون <User>\Application Data

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top