سؤال

ليطفو على السطح الحوار UAC في ويندوز فيستا عند الكتابة إلى خلية التسجيل HKLM، اخترنا عدم استخدام API Win32 والتسجيل، كما هو الحال عندما تفتقر أذونات فيستا، وكنا بحاجة إلى إعادة إطلاق تطبيق لدينا كامل مع حقوق المسؤول. بدلا من ذلك، ونحن نفعل هذه الحيلة:

ShellExecute(hWnd, "runas" /* display UAC prompt on Vista */, windir + "\\Reg", "add HKLM\\Software\\Company\\KeyName /v valueName /t REG_MULTI_TZ /d ValueData", NULL, SW_HIDE);

وهذا الحل يعمل بشكل جيد، فضلا عن ان طلبنا هو 32 بت واحد، ويتم تشغيله الأمر REG.EXE كما أنه سيكون التطبيق 32 بت باستخدام WOW طبقة التوافق! :( إذا ركض REG.EXE من سطر الأوامر، فإنه يتعارض بشكل صحيح في وضع 64 بت. هذه الأمور، لأنه لو كان يدير باعتبارها الوكالة 32 بت، ومفاتيح التسجيل في نهاية المطاف في المكان الخطأ بسبب <ل أ href = "http://msdn.microsoft.com/en-us/library/aa384235(VS.85).aspx" يختلط = "noreferrer"> انعكاس التسجيل .

وحتى لا يكون هناك أي وسيلة لإطلاق التطبيق 64 بت برمجيا من تطبيق 32 بت وليس لديها تشغيله باستخدام النظام الفرعي WOW64 مثل عملية 32 بت الأم (أي "*" لاحقة في إدارة المهام)

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

المحلول

وهذه محاولة (من عملية 32BIT و):

> %WINDIR%\sysnative\reg.exe query ...

(وجدت أن هنا ).

نصائح أخرى

وما إذا كان يتم تشغيل برنامج 32 بت أو 64 بت أصلي (غير المدارة) يعتمد فقط على تنفيذ. هناك نسختين من reg.exe، في C: \ ويندوز \ SYSTEM32 (64 بت) وC: \ ويندوز \ SysWOW64 (32-بت). لأنك لم تحدد مسارا، وكنت الحصول على كل ما يظهر أولا في متغير البيئة PATH، والذي هو نسخة 32 بت لعملية 32-بت.

ويجب أن عامل حقا بهذه المهمة في برنامج أو COM كائن منفصل، وعلامة البرنامج مع واضح، أو إطلاق كائن COM باستخدام في ارتفاع لقب COM .

هل تعتبر خلق "المساعد" تطبيق صغير لإجراء التحديث التسجيل بالنسبة لك؟ إذا كنت ترجمة ذلك إلى 64bit و تشمل على بيان يشير إلى أنه يتطلب حقوق المسؤول، ثم انها سوف تشمل كلا من القواعد بالنسبة لك.

وهناك في API للكشف عن "bitness" من نظام التشغيل الذي تقوم بتشغيله على ذلك يمكن أن، تصور، جمع كلا RegistryUpdate32.exe وRegistryUpdate64.exe واستدعاء واحدة ذات الصلة.

والشيء الوحيد الذي قمت به كحل لنفسي هو PInvoke تعطيل إعادة توجيه:

HTTP: // MSDN .microsoft.com / EN-US / مكتبة / ويندوز / المكتبي / aa365744 (ت = vs.85) .aspx اتصال

وأنت يمكن أن تتحول دائما على حق مرة أخرى.

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