سؤال

أحتاج إلى تخزين الملفات في سطح المكتب المشترك على Windows. التطبيق هو تطبيق خاص للغاية للكمبيوتر الشخصي بالضبط (إعداد الجهاز)، لذلك يجب أن يكون من السهل العثور على مستخدمي تكنولوجي وعدل ملف التكوين وتعديله. الآن تحولنا إلى مجال، ولأن أشخاص مختلفين (مع حسابات مختلفة) يجب أن يستخدمون البرنامج، يجب أن يكون في مكان مشترك، ينظر إليه كل مستخدم. لذا يرجى عدم طرح سبب وجودها على سطح المكتب؛)

سابقا، أنا فقط المستخدمة Environment.GetFolderPath(Environment.SpecialFolder.Desktop). وبعد هناك العديد من المجلدات المشتركة في SpecialFolder التعداد، ولكن سطح المكتب المشترك لا يبدو أن هناك. هل أفتقد شيئا ما، أو هل يجب علي / استدعاء SHGetSpecialFolderPath مع CSIDL_COMMON_DESKTOPDIRECTORY?

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

المحلول

أعتقد أن عليك استخدام SHGetSpecialFolderPath واجهة برمجة تطبيقات، نظرا لعدم وجود قيمة تعدد "commondesktopdirectory". لا يمكنك استخدام قيمة CSIDL_COMMON_DESKTOPDIRECTORY وإلقاء ذلك Environment.SpecialFolder, ، بسبب ال GetFolderPath يتم التحقق من الطريقة التي يتم تعريف القيمة في العادة. هنا رمز GetFolderPath الطريقة (من العاكس):

public static string GetFolderPath(SpecialFolder folder)
{
    if (!Enum.IsDefined(typeof(SpecialFolder), folder))
    {
        throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, GetResourceString("Arg_EnumIllegalVal"), new object[] { (int) folder }));
    }
    StringBuilder lpszPath = new StringBuilder(260);
    Win32Native.SHGetFolderPath(IntPtr.Zero, (int) folder, IntPtr.Zero, 0, lpszPath);
    string path = lpszPath.ToString();
    new FileIOPermission(FileIOPermissionAccess.PathDiscovery, path).Demand();
    return path;
}

لذلك يمكنك بسهولة نسخ وتكييف الجزء الذي تحتاجه ...

نصائح أخرى

للتوضيح - من قبل سطح المكتب المشترك هل تقصد C: المستندات والإعدادات جميع المستخدمين Desktop؟

إذا كانت الإجابة بنعم، فهذه هاكهة قبيحة -

Dim c As String = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
Dim comDesktop As String = c.Substring(0, c.LastIndexOf("\")) + "\Desktop"

يمكنك استخدام Windows Script Host - Wshshell.Specialfolders

http://msdn.microsoft.com/en-us/library/a7b5xe(vs.85).aspx.

أولا، أضف مرجعا إلى "نموذج كائن مضيف Windows Script". ستجد هذا في علامة التبويب COM في مربع حوار "إضافة مراجع".

using IWshRuntimeLibrary;

object commonUserDesktop = "AllUsersDesktop";
WshShell shell = new WshShellClass();
string commonPath = shell.SpecialFolders.Item(ref commonUserDesktop).ToString();

طريقة أخرى (نعم إنها أيضا قبيحة وستعمل على الأرجح فقط على نظام التشغيل Windows XP، وليس على Vista) هو قراءة قيمة من التسجيل

HKEY_LOCAL_MACHINE Software Microsoft Windows CurrentVersion Explorer Shell Planders، سطح المكتب المشترك

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