Приложение Winform не работает на 64-битном сервере

У меня есть приложение winform для чтения значений из реестра ..

поэтому я знаю, что для этого мне нужно работать как администратор.

У меня есть два сервера Win 2003. Один 32-битный, а другой 64-битный.

Когда я запускаю это приложение на моем 32-битном компьютере, у меня нет проблем, и оно считывает значения из реестра.

но когда я запускаю приложение со своего 64-битного сервера, оно не может читать из реестра.

я получаю

system.nullreferenceexception

поскольку я не могу прочитать корень моего ключа reg, который возвращает ноль.

Я также поместил файл манифеста, но с этим тоже не работает ..

любая помощь будет принята с благодарностью ... спасибо ..

вот мой файл манифеста:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1">
 <asmv1:assemblyIdentity version="1.0.0.31" name="FileShareMgmt.exe" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="msil" type="win32" />
<application />
<entryPoint>
<assemblyIdentity name="FileShareMgmt" version="1.0.0.0" language="neutral" processorArchitecture="msil" />
<commandLine file="FileShareMgmt.exe" parameters="" />
</entryPoint>
<trustInfo>
<security>
  <applicationRequestMinimum>
    <PermissionSet class="System.Security.PermissionSet" version="1"  Unrestricted="true" ID="Custom" SameSite="site" />
    <defaultAssemblyRequest permissionSetReference="Custom" />
  </applicationRequestMinimum>
  <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">       
<requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
    <!-- UAC Manifest Options
        If you want to change the Windows User Account Control level replace the 
        requestedExecutionLevel node with one of the following.

    <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
    <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
    <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

        If you want to utilize File and Registry Virtualization for backward 
        compatibility then delete the requestedExecutionLevel node.
    -->     
  </requestedPrivileges>
</security>
</trustInfo>

это не полный манифест, поскольку я думаю, что здесь нет необходимости показывать его ...


person user175084    schedule 08.07.2011    source источник
comment
Вероятно, нам нужно будет увидеть исходный код, чтобы понять это.   -  person Earlz    schedule 08.07.2011


Ответы (1)


Вы проверили, существует ли ключ, который вы пытаетесь прочитать, в 64-битной системе?

Путь может быть другим для 64-разрядной системы: http://support.microsoft.com/kb/896459

Если ваш раздел реестра содержит текст «WOW6432node», это 32-разрядная версия. 64-битная версия, вероятно, будет такой же, за исключением того, что часть пути там не будет.

Этот вопрос может быть связан с: Почему OpenSubKey () возвращает null в моей 64-битной системе Windows 7?

person E.Z. Hart    schedule 08.07.2011
comment
спасибо ... проблема заключалась в создании, мне пришлось использовать x86 .. что заставляет меня задаться вопросом, зачем мне нужен манифест для requestExecutionLevel level = highAvailable - person user175084; 08.07.2011