Microsoft Reduce Customer Effort Center

Our team drives product feedback based on solid data, it drives proactive issue prevention and ultimately, drives improvements around products based on customer feedback.

November, 2011

  • Word 2010 switches to Draft view from Print Layout view when the computer is left idle for a couple of minutes

    Some Word2010 users reported an interesting issue:

    You are viewing a document (with reviewing turned on) in Print Layout view, and after a few minutes, the view switches to Draft view and opens the comments window on the bottom. It usually happens when the computer is left idle for a
    couple of minutes or sometime seconds.

    Resolution:

    Please verify EndNote X5 add-on is installed with Word2010. Try following methods:

    1.  Start in Word in safe mode (hold the CTRL key while starting word).

    2.  Disabled cite while you write - in endnote x5 tab, click the arrow on the bottom right of 'bibliography' -> instant formatting tab -> turn off.

  • Script error when attempting to load album/track information in Windows Media Player 12

    Sometimes you may encounter the script error when you attempte to load album/track information in WMP12. For example:

    An error has occurred in the script on this page

    Line: 240

    Character: 25

    Error: Object expected

    Code: 0

    URL: http://fai.music.metaservices.microsoft.com/FAI/AlbumMatch.aspx?locale=409&geoid=f4&version=12.0.7601.17514&userlocale=409&requestid=830A4FFD-F3A3-4AD9-A1FA-390A48236E10

    Do you want to continue running scripts on this page? Yes or
    No.

     

    Causes:

    In most of cases, it is due to Internet Explorer can not load the pages. You can fix it by cleaning the IE temp. files.

     

    Resolution:

    1. Close the WMP.

    2. Please follow http://support.microsoft.com/kb/260897 to delete internet temp. files. Fix-it is recommended.

  • Powershell: How to restart the User Profile Synchronization Service if disabled?

    Below script shows how to restart the User Profile Synchronization Service if disabled.

     

    ============================================

    # Loads the SharePoint 2010 PowerShell extensions
    Add-PSSnapIn Microsoft.SharePoint.PowerShell 

    # Sets variable for User Profile Service Application: enter the name of your UPA in quotes, replacing the "UPA" example
    $upa = Get-SPServiceApplication |?{$_.displayname -eq "UPA"}

    # Sets variable for service instance: enter your User Profile Synchonization Service instance ID/GUID in quotes
    # which can be found by running "Get-SPServiceInstance" in PowerShell manually and copying the ID
    $profsync = Get-SPServiceInstance |?{$_.id -eq "382e333c-61f0-4107-ac5f-31aaf0a3aec3"}

    # Sets variables for farm account and password: enter your password in quotes
    $farmacctpwd = ConvertTo-SecureString -AsPlainText -String "Password1" -Force
    $farmacct = (get-spfarm).defaultserviceaccount

    # Sets variable for synchronization server: enter your server name in quotes
    $syncServer = "SharePoint1"
    if($profsync.Status -eq "disabled")
    {
      Write-Host "Provisioning User Profile Synchronization Service"
      $upa.SetSynchronizationMachine($syncServer, $profsync.ID, $farmacct.LookupName(), $farmacctpwd)
    }
    else
    {
      write-host "Profile Synchronization Service is"$profsync.Status
    }

  • How to determine if current user is a domain or local user?

    Assuming you need it in script, PowerShell:

     

    (gwmiWin32_LogonSession).GetRelated("Win32_UserAccount")

     

    If you expect more than one logon session, then

     

    (gwmi Win32_Process -filter "Handle = $Pid").GetRelated("Win32_LogonSession") |% {$_.GetRelated("Win32_UserAccount")}

     

    will give you Win32_UserAccount for the account used to run current powershell instance.

  • Error "The certificate enrollment page you are attempting to access cannot be used with this version of Windows" after MS11-051 patch installation

    Symptom:

    You have Windows Server 2003 with installed Certification Authority and Web Enrollment components.

    When you try to access web enrollment pages from a Windows Vista-based (or newer) computer you receive error:

    The certificate enrollment page you are attempting to access cannot be used with this version of Windows. To enable Web certificate enrollment for clients running Windows Vista, your administrator must update all Windows CA Web enrollment pages. To learn more about this issue and the steps needed to update Web enrollment pages to support all versions of Windows, see:

    http://support.microsoft.com/kb/922706

    You installed MS11-051 by following KB922706 but you are still getting the same erro.

    Solution:

    1.  Uninstall Security Update MS11-051.
    2.  Install hot fix KB922706
    3.  Install Security Update MS11-051.
    4.  Type:  IISReset

    More information:

    Install KB922706 update. Use the links below to download appropriate update:
    Download link for Windows Server 2003 x86
    Download link for Windows Server 2003 x64

    Install MS11-051 security patch. Use the links below to download appropriate update:
    Download link for Windows Server 2003 x86
    Download link for Windows Server 2003 x64

    There is a more conprehensive article authored by Vadims Podans also talking about this issue, please see:

    http://en-us.sysadmins.lv/Lists/Posts/Post.aspx?ID=53

     


     

  • CPP: How to wait on a job object?

    This is the sample code in CPP to show how to wait on a job object. In the documentation:

     

    The state of a job object is set to signaled when all of its processes are terminated because the specified end-of-job time limit has been exceeded. Use WaitForSingleObject or WaitForSingleObjectEx to monitor the job object for this event.

     

    If the processes terminate normally, then the job object is not signaled. To detect when all processes in a job have terminated, you need to associate the job with a completion port, and then listen on the I/O completion port for the JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO notification.

    =================================

    #define UNICODE

    #define _UNICODE

    #define STRICT

    #include
    <windows.h>

    #include
    <stdio.h>

    #include
    <atlbase.h>

    #include <atlalloc.h>

    #include
    <shlwapi.h>

     

    int __cdecl wmain(int argc, PWSTR argv[])

    {

       
    CHandle Job(CreateJobObject(nullptr, nullptr));

        if(!Job) {

           
    wprintf(L"Could not create job object, error %d\n", GetLastError());

           
    return 0;

        }

     

       
    CHandle IOPort(CreateIoCompletionPort(INVALID_HANDLE_VALUE, nullptr, 0, 1));

        if(!IOPort) {

           
    wprintf(L"Could not create IO completion port, error %d\n",GetLastError());

           
    return 0;

        }

     

       
    JOBOBJECT_ASSOCIATE_COMPLETION_PORT Port;

       
    Port.CompletionKey = Job;

       
    Port.CompletionPort = IOPort;

        if(!SetInformationJobObject(Job, JobObjectAssociateCompletionPortInformation,&Port, sizeof(Port))) {

           
    wprintf(L"Could not associate job with IO completion port, error %d\n", GetLastError());

           
    return 0;

        }

     

       
    PROCESS_INFORMATION ProcessInformation;

       
    STARTUPINFO StartupInfo = { sizeof(StartupInfo) };

       
    PWSTR CommandLine = PathGetArgs(GetCommandLine());

     

        if(!CreateProcess(nullptr, CommandLine, nullptr, nullptr, FALSE,CREATE_SUSPENDED, nullptr, nullptr, &StartupInfo, &ProcessInformation))
    {

           
    wprintf(L"Could not run process, error %d\n", GetLastError());

           
    return 0;

        }

     

        if(!AssignProcessToJobObject(Job, ProcessInformation.hProcess)) {

           
    wprintf(L"Could not assign process to job, error %d\n",
    GetLastError());

           
    return 0;

        }

     

       
    ResumeThread(ProcessInformation.hThread);

       
    CloseHandle(ProcessInformation.hThread);

       
    CloseHandle(ProcessInformation.hProcess);

     

       
    DWORD CompletionCode;

       
    ULONG_PTR CompletionKey;

       
    LPOVERLAPPED Overlapped;

     

       
    while (GetQueuedCompletionStatus(IOPort, &CompletionCode,&CompletionKey, &Overlapped, INFINITE) && CompletionCode !=JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO) {

           
    wprintf(L"Still waiting...\n");

        }

     

       
    wprintf(L"All done\n");

     

       
    return 0;

    }

  • C# - How to load DLL in separate domain and use its methods?

    Sometimes you may have a need to load a DLL in a separate domain to call its method at run-time. You can create a proxy class by referencing the following code snippet:

    public class Loader : MarshalByRefObject
     {
         object CallInternal(string dll, string typename, string method, object[] parameters)
         {
             Assembly a = Assembly.LoadFile(dll);
             object o = a.CreateInstance(typename);
             Type t = o.GetType();
             MethodInfo m = t.GetMethod(method);
             return m.Invoke(o, parameters);
         }
         public static object Call(string dll, string typename, string method, params object[] parameters)
         {
             AppDomain dom = AppDomain.CreateDomain("MyNewDomain");
             Loader ld = (Loader)dom.CreateInstanceAndUnwrap(Assembly.GetExecutingAssembly().FullName, typeof(Loader).FullName);
             object result = ld.CallInternal(dll, typename, method, parameters);
             AppDomain.Unload(dom);
             return result;
         }
     }
    
  • How to query network adapter for IPv6 protocol?

    Assuming you need it in script, PowerShell:

    # computername

    $MachineName = 'localhost'

     

    # open HKLM reg on $MachineName

    $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $MachineName)

     

    # open subKey SYSTEM\CurrentControlSet\services\TCPIP6\Linkage

    $regKey = $reg.OpenSubKey("SYSTEM\\CurrentControlSet\\services\\TCPIP6\\Linkage")

     

    # get the values from the name 'Bind'

    # e.g. \Device\{A2B312D5-A133-4779-B21B-5B3ED82B6DCF}

    $bind = $regKey.GetValue("bind")

     

    # get adapters that are IP enabled : e.g. IPv4 or IPv6 is active

    $adapters = gwmi -computer $MachineName Win32_NetworkAdapterConfiguration|?{$_.IPEnabled}

     

    # for each adapter check if his GUID is in the Bind values and display info regarding IPv6 binding

    foreach ( $adap in $adapters)

       
    {

           
    # get GUID of the adapter

               
    $guid = $adap.SettingID

               
    # get the name of the adapter to be used to display info

           
    $name = (gwmi -computer $MachineName Win32_NetworkAdapter|?{$_.guid -eq $guid}).NetConnectionID

               
    # buid the \device\GUID string from the GUID of the adapter

           
    $device_guid = '\Device\'+$guid

               
    # check if the bind key contains the adapter guid

           
    if($bind -contains $device_guid)

                
    {write-host "Computer $MachineName -> IPv6 OK in adapter: $name" }

           
    else {write-host "Computer $MachineName -> IPv6 not bind on adapter: $name" }

       
    }

    Write `nDone  

  • A Windows Live error occurred while provisioning for "mail@domain.com". An internal error occurred while talking to Windows Live

    Symptom:

    You've implemented federation (AD FS) in your on-premises organization. You are doing a staged Exchange Migration (using a CSV file). You have migrated a couple of mail boxes from on-premises Exchange server to Plan E3. 

    But you start getting error:

    A Windows Live error occurred while provisioning for "mail@domain.com". An internal error occurred while talking to Windows Live. Additional details: "0x800482101033This action is currently blocked for the API.
    CH1IDOPRTI02 2011.07.22.15.10.19".

    Resolution:

    Please check in the CSV file, are youusing TRUE for the value of the ForceChangePassword attribute?

    If so, then in the CSV file, change the value for ForceChangePassword to FALSE, and then rerun the migration.  For example:

    EmailAddress,Password,ForceChangePassword
    pilarp@tailspintoys.com,Pa$$w0rd,False
    tobyn@tailspintoys.com,Pa$$w0rd,False
    iant@tailspintoys.com,Pa$$w0rd,False

    Alternatively, you can remove the Password and ForceChangePassword columns. The documentation for staged Exchange migration will be updated accordingly.

  • Admin cannot upload profile picture after SP1 and June CU

    Symptom:

    After SharePoint 2010 SP1 and June CU
    upgrade, when customer goes into Central Admin->manage user profile service
    app->manage user profiles, select a user, he cannot uploaded their profile
    picture any more, when he click choose picture and upload, it threw this error
    "There was an error saving the picture. Please try again later.", he
    does not see anything in the ULS log. The user is able to upload their own
    pictures however not the admin.

     

    Root cause:

    This seems to be a known issue of June CU. The fix is under development and will be released soon.

     

    Current workaround:

    Use powershell script to do the update.

    You can reference the sampe script in the link http://get-spscripts.com/2010/12/upload-multiple-user-profile.html as a temp. workaround.

  • MSQUERY randomly crashed

    There are many possible causes that can crash MSQuery in office 2010. A typical crash is as below:

    AppName: msqry32.exe AppVer: 14.0.4750.1000 ModName: msvcr90.dll

    There are several possible resolution you can try to resolve the above crash:

    1. When you launch MS Query, just disable the option "Validate queries before saving or returning data", this is the fifth box in the options menu.

    The only problem is that if you have made any mistake in your query, you'll only be noticed when receiving the data in excel.

     

    2. Repair all the keys into registry at the following place:

    [HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC]

    For example:

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC]
    "TraceFile"="C:\\DOCUME~1\\...USERNAME...\\IMPOST~1\\Temp\\SQL.LOG"
    "TraceDll"="C:\\WINDOWS\\system32\\odbctrac.dll"

    In some cases ODBC trace/analyze log is off and can't create a big SQL.LOG file size that cause msvcr90.dll crash

     

  • Powershell: How to re-provsion the sync DB to resolve the issue that User Profile Synchronization Service fails to start?

    You can use the below script:

    ==================================

    Get-SPDatabase $syncdb=Get-SPDatabase -Id

    $syncdb.Unprovision()
    $syncdb.Status='Offline'
    Get-SPServiceApplication
    $upa=Get-SPServiceApplication - Id
    $upa.ResetSynchronizationMachine()
    $upa.ResetSynchronizationDatabase()
    $syncdb.Provision()