首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法在Windows Embedded Standard上启用EWF

无法在Windows Embedded Standard上启用EWF
EN

Stack Overflow用户
提问于 2011-03-09 20:12:43
回答 2查看 10.6K关注 0票数 2

嗨,我们买了一台惠普电脑与MS Windows Embedded Standard-惠普定制,我们有一个问题,在启用EWF功能。如果我尝试用EMF Manager检查EWF状态:

代码语言:javascript
复制
ewfmgr c: 

我得到了错误:

代码语言:javascript
复制
“Failed getting protected volume configuration with error 1.  incorrect function.”

如果我尝试使用commad启用EWF:

代码语言:javascript
复制
ewfmgr c -enable

我得到了错误:

代码语言:javascript
复制
Failed opening the target device \\.\c with error 2
The system cannot find the file specified.

我尝试使用HP实用程序- HP Write Filter Configuration来启用EWF。

但当我使用此实用程序启用EWF时,重新启动PC,EWF被禁用。

只有FBWF在工作。

有什么是不好的呢?有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2011-03-09 22:06:46

在"Reg RAM“以外的模式中,EWF需要一个特殊版本的Windows引导加载程序(NTLDR)和一些未分区的磁盘空间来创建覆盖卷。我不知道您的HP PC是否已配置了这些设备。

这里列出了一些EWF系统要求:

http://msdn.microsoft.com/en-ca/library/bb499124.aspx

EWF通常在第一个引导代理(FBA)过程中创建其覆盖卷。您可以检查fbalog.txt中的错误。这里有一些重构EWF卷的说明:

http://msdn.microsoft.com/en-us/library/ms913271(WinEmbedded.5).aspx

找不到文件错误可能是由于您的第二个命令中缺少':‘。

请尝试使用ewfmgr c: -enable

票数 0
EN

Stack Overflow用户

发布于 2019-03-13 12:58:24

我意识到这个问题很古老,但它是在我的搜索中出现的,所以我想我应该留下我的答案。

当我遇到这个错误时,是因为我使用imeagex恢复了一个镜像。在获取备份映像之前,我没有运行sysprep。我擦除并重新创建了分区,它更新了分区签名,这使EWF非常困惑,使其无法工作。

EWF没有很好的工具来配置受保护的卷。所以我写了一个。这是源码。

代码语言:javascript
复制
#define _WIN32_WINNT 0x0400

#include <windows.h>
#include <winioctl.h>
#include <tchar.h>

const TCHAR VOL_PATH[] = TEXT("SYSTEM\\CurrentControlSet\\Services\\ewf\\Parameters\\Protected\\Volume%i");

VOID Usage(){

    _tprintf(TEXT("Usage: ewfvoladd <Drive Letter> <Volume Number>\n"));

}

INT _tmain(INT iArgCount, LPCTSTR pszArgVals[]){

    INT iReturn = 0;

    if (iArgCount == 3){

        TCHAR szDrive[MAX_PATH];

        _sntprintf_s(szDrive,MAX_PATH,TEXT("\\\\.\\%s:"),pszArgVals[1]);
        szDrive[MAX_PATH-1] = 0;

        HANDLE hPartition = CreateFile(szDrive,GENERIC_READ,FILE_SHARE_READ | FILE_SHARE_WRITE,nullptr,OPEN_EXISTING,0,nullptr);

        if (hPartition != INVALID_HANDLE_VALUE){

            PARTITION_INFORMATION piPartInfo = {};

            DWORD dwSize = sizeof(piPartInfo);

            if (DeviceIoControl(hPartition,IOCTL_DISK_GET_PARTITION_INFO,nullptr,0,&piPartInfo,dwSize,&dwSize,nullptr)){

                dwSize = sizeof(DRIVE_LAYOUT_INFORMATION) + sizeof(PARTITION_INFORMATION) * 9;

                LPBYTE pbDrive = new BYTE [ dwSize ];

                ZeroMemory(pbDrive,dwSize);

                DRIVE_LAYOUT_INFORMATION *pdliDrive = (DRIVE_LAYOUT_INFORMATION*)pbDrive;

                if (DeviceIoControl(hPartition,IOCTL_DISK_GET_DRIVE_LAYOUT,nullptr,0,pdliDrive,dwSize,&dwSize,nullptr)){

                    TCHAR szVol[MAX_PATH];

                    _sntprintf_s(szVol,MAX_PATH,VOL_PATH,(INT)_ttol(pszArgVals[2]));
                    szVol[MAX_PATH-1] = 0;

                    HKEY hVol = nullptr;

                    LONG lRegErr = RegCreateKeyEx(HKEY_LOCAL_MACHINE,szVol,0,nullptr,REG_OPTION_NON_VOLATILE,KEY_WRITE,nullptr,&hVol,nullptr);

                    if (lRegErr == ERROR_SUCCESS){

                        const DWORD dwZero = 0,
                                    dwOne = 1,
                                    dwTwo = 2;

                        lRegErr = RegSetValueEx(hVol,TEXT("Type"),0,REG_DWORD,(LPCBYTE)&dwTwo,sizeof(dwTwo));

                        if (lRegErr != ERROR_SUCCESS){

                            iReturn = (INT)lRegErr;

                            _tprintf(TEXT("Failed to set Type: %i\n"),iReturn);

                        }

                        lRegErr = RegSetValueEx(hVol,TEXT("Enabled"),0,REG_DWORD,(LPCBYTE)&dwZero,sizeof(dwZero));

                        if (lRegErr != ERROR_SUCCESS){

                            iReturn = (INT)lRegErr;

                            _tprintf(TEXT("Failed to set Enabled: %i\n"),iReturn);

                        }

                        lRegErr = RegSetValueEx(hVol,TEXT("CompareBeforeAlloc"),0,REG_DWORD,(LPCBYTE)&dwOne,sizeof(dwOne));

                        if (lRegErr != ERROR_SUCCESS){

                            iReturn = (INT)lRegErr;

                            _tprintf(TEXT("Failed to set CompareBeforeAlloc: %i\n"),iReturn);

                        }

                        lRegErr = RegSetValueEx(hVol,TEXT("DiskSignature"),0,REG_DWORD,(LPCBYTE)&pdliDrive->Signature,sizeof(pdliDrive->Signature));

                        if (lRegErr != ERROR_SUCCESS){

                            iReturn = (INT)lRegErr;

                            _tprintf(TEXT("Failed to set DiskSignature: %i\n"),iReturn);

                        }

                        lRegErr = RegSetValueEx(hVol,TEXT("PartitionOffset"),0,REG_QWORD,(LPCBYTE)&piPartInfo.StartingOffset.QuadPart,sizeof(piPartInfo.StartingOffset.QuadPart));

                        if (lRegErr != ERROR_SUCCESS){

                            iReturn = (INT)lRegErr;

                            _tprintf(TEXT("Failed to set PartitionOffset: %i\n"),iReturn);

                        }

                        RegCloseKey(hVol);

                    }else{

                        iReturn = (INT)lRegErr;

                        _tprintf(TEXT("Failed to open registry key (%s): %i\n"),szVol,iReturn);

                    }

                }else{

                    iReturn = (INT)GetLastError();

                    _tprintf(TEXT("Failed to get disk info: %i\n"),iReturn);

                }

                delete [] pbDrive;

            }else{

                iReturn = (INT)GetLastError();

                _tprintf(TEXT("Failed to get partition info: %i\n"),iReturn);

            }

            CloseHandle(hPartition);

        }else{

            iReturn = (INT)GetLastError();

            _tprintf(TEXT("Failed to open drive: %i\n"),iReturn);

        }

    }else{

        iReturn = ERROR_INVALID_PARAMETER;

        Usage();

        _tprintf(TEXT("\nNot enough parameters\n"));

    }

    return iReturn;

}

因此,如果您只有一个分区,并且它是C:驱动器,那么您可以运行以下命令并重新启动。

代码语言:javascript
复制
ewfvoladd c 0

然后,您应该能够像这样启用EWF

代码语言:javascript
复制
ewfmgr c: -enable

再重启一次,就完成了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5245586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档