كيف موثوق تحصل على سرعة إطلاق المجلد XP و Vista ؟
-
09-06-2019 - |
سؤال
نحن بحاجة إلى موثوق تحصل على سرعة إطلاق مجلد لكل جميع المستخدمين الحاليين في إطار كل من فيستا و XP.أنا النامية في C++, ولكن هذا هو على الارجح أكثر من عام Windows API السؤال.
للإشارة هنا هو رمز للحصول على المجلد "بيانات التطبيق" في كلا النظامين:
HRESULT hres;
CString basePath;
hres = SHGetSpecialFolderPath(this->GetSafeHwnd(), basePath.GetBuffer(MAX_PATH), CSIDL_APPDATA, FALSE);
basePath.ReleaseBuffer();
وأظن أن هذا هو مجرد مسألة معرفة أي مجلد فرعي يستخدم Microsoft.
تحت Windows XP, التطبيق البيانات فرعي هو:
Microsoft\Internet Explorer\Quick Launch
تحت ويندوز فيستا ، يبدو أن المجلد الفرعي الذي تم تغييرها إلى:
Roaming\Microsoft\Internet Explorer\Quick Launch
ولكن أريد أن تأكد من أن هذا هو الطريق الصحيح لتحديد الموقع الصحيح.
العثور على الصحيح طريقة لتحديد هذا الموقع مهم جدا ، كما تعتمد على الثابت ترميز أسماء المجلدات دائما تقريبا فواصل كما يمكنك الانتقال إلى تثبيت ، الخ...حقيقة أن المجلد المسمى 'التجوال في فيستا يجعلني أتساءل عما إذا كان هناك معالجة خاصة ذات الصلة إلى هذا المجلد (أقرب إلى الإعدادات المحلية المجلد تحت XP).
تحرير:المقالة msdn التالي: http://msdn.microsoft.com/en-us/library/bb762494.aspx يشير إلى أن CSIDL_APPDATA ما معرف FOLDERID_RoamingAppData التي لا يبدو أن الدعم StocksR تأكيد أن CSIDL_APPDATA لا عودة C:\Users\xxxx\AppData oaming لذلك ينبغي أن يكون من الممكن استخدام نفس المسار النسبي على CSIDL_APPDATA للوصول إلى التشغيل السريع (\Microsoft\Internet Explorer\Quick Launch).
لذا الخوارزمية التالية هو الصحيح في MS:
HRESULT hres;
CString basePath;
hres = SHGetSpecialFolderPath(this->GetSafeHwnd(), basePath.GetBuffer(MAX_PATH), CSIDL_APPDATA, FALSE);
basePath.ReleaseBuffer();
CString qlPath = basePath + "\\Microsoft\\Internet Explorer\\Quick Launch";
كما سيكون فكرة جيدة للتحقق من hres لضمان أن الدعوة إلى SHGetSpecialFolderPath كانت ناجحة.
المحلول
AppData على ويندوز فيستا يشير إلى C:\Users\xxxx\AppData oaming لا C:\Users\xxxx\AppData المجلد انها النفس.
أيضا هذا الخبر http://www.microsoft.com/technet/scriptcenter/resources/qanda/sept05/hey0901.mspx على موقع مايكروسوفت يعني أن لديك ببساطة إلى استخدام مسار نسبي إلى المجلد appdata
نصائح أخرى
السؤال الكبير!
مهما فعلت ، لا تعطي في إغراء حفر في التسجيل للعثور على هذه المعلومات!
أيضا, يجب علينا أن نقاوم إغراء رمز من الصعب بعض الطريق ، ولو جزئيا.إذا حصلنا على الخاص AppData مسار ، ثم ببساطة إلحاق سلسلة إلى نهاية هذا قد كسر تحت غير الولايات المتحدة تثبيت البرنامج حيث يكون اسم المجلد المترجمة إلى تلك اللغة.E. g. GetSpecialFolderPath(APP_DATA) + "\\Fonts"
لا تعمل على إصدارات غير الإنجليزية من Windows.
نأمل شخص ما لديه الجواب الصحيح على سؤالك;أنا الغريب لمعرفة ذلك بنفسي!